Chabok
شنبه 29 دی 1386, 09:06 صبح
با عرض سلام خدمت دوستان عزیز(خواهشمند است به انشای زیر توجه فرمایید)
من باید یک MasterDetail ساده رو با یک یوزر کنترل ساده پیاده کنم.
این کار توسط دو DropDown انجام میشه .
اولی گروه های کاربری است و دومی کاربران هر گروه که با توجه به اولی پر می شود .(هر دو از دیتابیس)
DropDown اول AutoPostBack می باشد و با تغییر کردن میخواهم دومی را پر کنم .
اگر بدون استفاده از ViewState اینکار انجام بشود خیلی بهتر است .
مشکلی در پر کردن DropDown ها نیست . مشکل من استفاده از رویدادهای مناسب می باشد .
من در نهایت میخواهم کاربر انتخاب شده رو که از کمبو دوم انتخاب میشه توسط یک ReadOnly Property ، از نوع عددی که کد کاربر می باشد Return کنم
Public ReadOnly Property SelectedUser() As Integer
Get
Return Combo1.SelectedValue
End Get
End Propertyکارایی این Property کاملا به رویدادهای پر کردن کمبوها بستگی داره و همیشه جواب نمیده.
(مقدار انتخاب شده رو نمیده . مقدار اولین آیتم رو میده).
سوالات :
آیا باید کمبو اول رو در FormLoad پر کرد و کمبو دوم را در Combo1_Changed ؟ (نشد)
آیا باید از تابع CreateChildControls() استفاده کنم ؟ (یکمی شد ولی کامل نشد)
آیا استفاده از Combo1_Changed توصیه می شود یا مقدار تغیییر کرده را در Load جدید بدست بیارم ؟
مشکلاتی که به آن برخورد کردم :
در تابع CreateChildControls() مقدار انتخاب شده کمبو اول بدست نمیاد تا باهاش کمبو دومی را پر کنم
هنگامی که در Page_Load کمبو دوم را پر می کردم هنگام پست بک شدن صفحه مقدار انتخاب شده از دست می رفت
روشی که ناقص جواب گرفتم :
اگر در CreateChildControls() کمبو اول را پر کنم در Combo1_Changed مقدار آن بدست می آید .
و با آن می توانم کمبو دوم را پر کنم . ولی هنگامی که صفحه پست بک می شود کمبو دوم خالی می شود
و بنابراین مقدار آن هم می پرد . (چون کمبو دوم در هنگام لود شدن صفحه پر نشده است)
راه حل های مطرح شده:
یکی استفاده از CreateChildControls() است که در هنگام کلیک کردن یک Button در یوزر کنترل مطرح شد
یکی استفاده از رویدادهای سمت والد است . یعنی با نوشتن Event در یوزر کنترل سمت والد آن را هندل کنیم .
(این روش اصلا مناسب کار من نیست . من این یوزر کنترل را در بیش از 10 فرم احتیاج دارم)
در ضمن خود والد یک یوزر کنترل است که بصورت داینامیک لود شده . ولی همین یوزر کنترل کاربرها بصورت عادی در یوزر کنترل والد می باشد .
از دوستان تقاضای راهنمایی و کمک دارم .
ممنون و سپاسگزار
من باید یک MasterDetail ساده رو با یک یوزر کنترل ساده پیاده کنم.
این کار توسط دو DropDown انجام میشه .
اولی گروه های کاربری است و دومی کاربران هر گروه که با توجه به اولی پر می شود .(هر دو از دیتابیس)
DropDown اول AutoPostBack می باشد و با تغییر کردن میخواهم دومی را پر کنم .
اگر بدون استفاده از ViewState اینکار انجام بشود خیلی بهتر است .
مشکلی در پر کردن DropDown ها نیست . مشکل من استفاده از رویدادهای مناسب می باشد .
من در نهایت میخواهم کاربر انتخاب شده رو که از کمبو دوم انتخاب میشه توسط یک ReadOnly Property ، از نوع عددی که کد کاربر می باشد Return کنم
Public ReadOnly Property SelectedUser() As Integer
Get
Return Combo1.SelectedValue
End Get
End Propertyکارایی این Property کاملا به رویدادهای پر کردن کمبوها بستگی داره و همیشه جواب نمیده.
(مقدار انتخاب شده رو نمیده . مقدار اولین آیتم رو میده).
سوالات :
آیا باید کمبو اول رو در FormLoad پر کرد و کمبو دوم را در Combo1_Changed ؟ (نشد)
آیا باید از تابع CreateChildControls() استفاده کنم ؟ (یکمی شد ولی کامل نشد)
آیا استفاده از Combo1_Changed توصیه می شود یا مقدار تغیییر کرده را در Load جدید بدست بیارم ؟
مشکلاتی که به آن برخورد کردم :
در تابع CreateChildControls() مقدار انتخاب شده کمبو اول بدست نمیاد تا باهاش کمبو دومی را پر کنم
هنگامی که در Page_Load کمبو دوم را پر می کردم هنگام پست بک شدن صفحه مقدار انتخاب شده از دست می رفت
روشی که ناقص جواب گرفتم :
اگر در CreateChildControls() کمبو اول را پر کنم در Combo1_Changed مقدار آن بدست می آید .
و با آن می توانم کمبو دوم را پر کنم . ولی هنگامی که صفحه پست بک می شود کمبو دوم خالی می شود
و بنابراین مقدار آن هم می پرد . (چون کمبو دوم در هنگام لود شدن صفحه پر نشده است)
راه حل های مطرح شده:
یکی استفاده از CreateChildControls() است که در هنگام کلیک کردن یک Button در یوزر کنترل مطرح شد
یکی استفاده از رویدادهای سمت والد است . یعنی با نوشتن Event در یوزر کنترل سمت والد آن را هندل کنیم .
(این روش اصلا مناسب کار من نیست . من این یوزر کنترل را در بیش از 10 فرم احتیاج دارم)
در ضمن خود والد یک یوزر کنترل است که بصورت داینامیک لود شده . ولی همین یوزر کنترل کاربرها بصورت عادی در یوزر کنترل والد می باشد .
از دوستان تقاضای راهنمایی و کمک دارم .
ممنون و سپاسگزار