افزودن dropdownlist به formview

من میخوام با formview یه سری اطلاعات رو وارد دیتابیس کنم .
واسه همین DefaultMode اون رو به Insert تغییر دادم .
حالا میخوام بعضی از فیلدها رو با DropDownList پر کنم .
ولی وقتی DropDownList رو به قسمت EditTemplate اون اضافه میکنم و Bind میکنم به یکی از فیلدهای دیتابیس ، عمل I Insert انجام میشه ولی فیلدهای DropDownList در دیتابیس پر نمیشوند و خالی میمونن !
 

TNZ187

Member
یک دیتاسورس

سلام
شما نمی تونید بای یک دیتا سورس این کار رو انجام بدید ، چرا که Dropdownlist باید به یک دیتاسورس دیگه متصل بشه نه همون دیتاسورس ، چرا که دیتاسورس اول یک تعداد مشخصی از سطر های دیتابیس رو انتخاب کرده و نمی تونه در یک مرحله دوباره بیاد و Dropdownlist رو هم پر کنه .
راه حل این موضوع اینه که در EditTemplate یک Dropdownlist قرار بدید ، و دیتا سورس اون رو مجزا کنید .:wink:
 
سلام
شما نمی تونید بای یک دیتا سورس این کار رو انجام بدید ، چرا که Dropdownlist باید به یک دیتاسورس دیگه متصل بشه نه همون دیتاسورس ، چرا که دیتاسورس اول یک تعداد مشخصی از سطر های دیتابیس رو انتخاب کرده و نمی تونه در یک مرحله دوباره بیاد و Dropdownlist رو هم پر کنه .
راه حل این موضوع اینه که در EditTemplate یک Dropdownlist قرار بدید ، و دیتا سورس اون رو مجزا کنید .:wink:

خب من هم دقیقا همین کار رو کردم .
دیتاسورس DropDownList من از دیتاسورس FormView مجزا هستش ومن اون رو در EditTemplate فورمویو قرار دادم و Bind کردم به یکی از فیلدهای FormView !
یعنی همه چیز ظاهرا درسته و برنامه به خوبی کار میکنه !
فقط مقدار انتخاب شده DropDownList در دیتا بیس وارد نمیشه ولی بقیه فیلدها وارد میشن !
 

TNZ187

Member
سلام
می بخشید که درست متوجه نشده بودم .
اگه الان درست متوجه شده باشم ، مشکل شما اینه که چون DropDownList رو از یک دیتاسورس دیگه پر می کنید ، دیگه به عنوان پارامتر در Update و Insert به صورت خودکار عمل نمی کنه و شما باید مقدار DropdownList خودتون رو به صورت دستی به دیتاسورس اولتون بفرستید تا به عنوان پارامتر استفاده کنه .
 
اصلا DropDownList به هر طریقی که میخواد پر بشه !
مشکل اینه که مقدار انتخاب شده از DropDownList همراه اطلاعات FormView وارد دیتابیس نمیشه و همیشه فیلد مربوط به اون خالی میمونه در حالی که بقیه فیلدها که با TextBox خود FormView پر شده اند ، وارد دیتابیس میشن !
 

TNZ187

Member
سلام برادر
حالا چرا عصبی شدی ( عصبی شدی ؟).
من که گفتم :
مشکل شما اینه که چون DropDownList رو از یک دیتاسورس دیگه پر می کنید ، دیگه به عنوان پارامتر در Update و Insert به صورت خودکار عمل نمی کنه و شما باید مقدار DropdownList خودتون رو به صورت دستی به دیتاسورس اولتون بفرستید تا به عنوان پارامتر استفاده کنه .
برای اینه که مقادیر ItemTemplate ها به صورت خودکار به پارامتر ها اضافه نمی شوند . که برای این کار دوراه داره . که دومی که اضافه کردن دستی اون به دیتاسورس اصلی راه حل شما ست
 
خب چه فایده !
اگه قراره دستی اینکارو کنم ، دیگه Asp.net به چه دردی میخوره ؟
 

TNZ187

Member
سلام
برای اینکه راحت تر باشیم : Asp.net به هیچ دردی نمی خوره :D
بعد منظور من از دستی کد زیر بود ( واقعا خیلی دستیه :D )
کد:
mydatasource.Insertparamter("amir").default=ctype(gridview.rows(e.rowIndex).findcontrol("dropdownlist"),web.ui.webcontrol.dropdownlist)).selectedvalue()
خوب. این یه نمونه بود . حالا اگه توضیح بیشتر لازمه من بازم از معایب Asp.net حاضرم توضیح بدم
 
قربونت برم .
خیلی آقایی .
خیلی دنبال این کد میگشتم ، چون نحوه تعریف دستی اونو نمیتونستم انجام بدم .
ولی حالا فکر کنم دیگه با این کد مشکلی پیش نیاد !
بازم چک میکنم . اگه مشکلی بود باز مزاحم میشم .
مرسی .
 
خب آقا من اینو تست کردم .
یه مشکلی هست و اونم این که من با FormView کار میکنم نه با Gridview !
ب همین دلیل کد شما تو قسمت (e.rowIndex) ارور میده !
 

TNZ187

Member
چه بهتر

سلام
خوب اگه از Formview استفاده کنید کارتون راحت تر هم هست . ( البته نمی خواهم بی دقتی خودم رو برای دادن کد اشتباه توجیه کنم) . شما می تونید از این کد استفاده کنید .
کد:
mydatasource.Insertparamter("amir").default=ctype(formview.findcontrol("dropdownlist"),web.ui.webcontrol.dropdownlist)).selectedvalue()
توی این کد ، همون طور که می دونید ، پارامتری که FindControl قبول می کنه اسم یک کنترل است .:wink:
 

TNZ187

Member
ُسلام
من که که دیگه نمی دونم این ارور رو برای چی می ده ، چون کد رو امتحان کردم . ولی محض اطمینان کد رو توضیح می دم تا خودتون توی کد های خودتون علت خطا رو پیدا کنید .
قسمت اول کد برای اینه که ما بیایم و یک مقدار رو به پارامترمون بدیم . این مقدار به این صورت داده می شه :
کد:
MyDataSource.InsertParameters("amir").DefaultValue
این ساده ترین حالته . ( یعنی راه های حرفه ای تر هم وجود داره )
قسمت بعدی برای پیدا کردن یک کنترل درون FormView است .
کد:
MyFormView.FindContro("mydropdownlistID")
بعد از اینکه کنترل پیدا شد ، اون رو به یک DropDownlist تبدیل می کنیم ، چرا که مقدار بازگشتی تابع بالا یک شی Control است .
کد:
Ctype(MyFormView.FindContro("mydropdownlistID"),Sysem.Web.UI.WebControls.Dropdownlist)
بعد از اینکه کنترل تبدیل شد ، دیگه می تونیم طبق خواسته خودمون ازش استفاده کنیم . برای مثال اگه شما مقدار انتخاب شده DropDownList مد نظرتون قرار داره می تونید از کد زیر استفاده کنید .
کد:
ِDim Name as string = Ctype(MyFormView.FindContro("mydropdownlistID"),Sysem.Web.UI.WebControls.Dropdownlist).SelectedValue
MyDataSource.InsertParameters("amir").DefaultValue=name
دیگه اگه مشکلی بود کدتون رو بذارید ، اصلاح می کنم براتون می فرستم . :wink:
 
آقا یه خبر خوش !
بالاخره حل شد !
مشکل با همون Dim Name as string حل شد !
ممنون از اینکه وقت گذاشتید .
 

جدیدترین ارسال ها

بالا