PDA

View Full Version : مبتدی: کمبوباکسه تلریک من توی updatepanel به پست بک خودش خطا میده ؟



hgh.just.hony
پنج شنبه 07 دی 1391, 08:39 صبح
سلام یچه ها
من یه مسترپیج دارم و یه صفحه
تو صفحم یه update panel هست که صفحات دیگه به صورت user control را صدا می زنه
user control که اینجا صدا زده شده اسمش Ticket. هست که درونش یه user control دیگه به اسم normal ticket را خودش صدا می زنه
مشکل من اینجاست که اینجاست که توی normal ticket یه drop down از جنس تلریک که زمانی که برنامم بالا میاد و من drop down را کلیک می کنم این خطا را به من میده؟
این چه معنی داره ؟


The target 'ctl00$ContentPlaceHolder1$ctl03$Uc1$RadComboBox4' for the callback could not be found or did not implement ICallbackEventHandler.:متفکر:

hgh.just.hony
پنج شنبه 07 دی 1391, 12:50 عصر
هل من ناصرا ینصرلی؟
.
.
کیست مرا یاری دهد؟:گریه::گریه::گریه:
یه جا اینو نوشته بود :


استفاده از کنترل‌های کابری UCها (User Control) در میان برنامه نویسانASP.NET طرفداران زیادی دارد. با استفاده از UC می توان مجموعه ای از کنترلهای سمت سرور یا html را در جاهای مختلف از صفحات aspx یا داخل UCهای دیگر استفاده کرده و از نوشتن کدهای تکراری اجتناب نمود. همچنین می توان تنها قسمتی از یک Web Form را با کمک UCها Cache نمود (Fragment Caching). یکی دیگر از استفاده‌های UCها بکارگیری آنها بعنوان یک کنترل سمت سرور می باشد. که در این صورت می توان برای UC مورد نظر Methodها و Propertyهای مختلفی را بسته به نیاز تعریف کرده و از آنها استفاده نمود. آن دسته از توابعی که اکثر کنترلهای سمت سرور از آن برخوردار می باشند، توابع رویداد یا همان Eventها می باشند. مثل تابع رویداد فشردن یک کنترل از نوع Button.
اکنون می خواهیم بدانیم که در UCها چگونه می توان توابع رویداد تعریف کرده و از آنها استفاده نمود. به دو طریق می توان برای یک UC تابع رویداد تعریف کرد. روش اول تعریف یک تابع رویداد داخلی برای یک UC می باشد. که در این صورت تابع رویداد تنها در داخل UC صدا زده می‌شود. اما روش دوم تعریف توابع رویداد خارجی است به طوریکه بتوان این توابع را از خارج UC نیز صدا زد. بحث اصلی این مقاله پیرامون همین نوع از توابع رویداد یا Event می باشد.
برای درک بهتر مطلب بهتر است که به طرح یک مثال بپردازیم. فرض کنید که می خواهید یک کنترل که عملکرد یک منو را داشته باشد با استفاده از UC ایجاد کنید. این منو دارای آیتم‌های مختلفی است که هر آیتم نیز ایندکس خاص خود را دارد. حال می خواهیم یک Event برای این منو تعریف کنیم بطوریکه بتوانیم آن را از همان جایی که UC را استفاده می کنیم، صدا بزنیم. برای ایجاد این کنترل قبل از هر چیز بهتر است که از یک سرور کنترل تکرار شونده و داده پذیر (Data Bound) مثل Repeater ، DataList و یا DataGrid استفاده کنیم. در این مقاله ما از کنترل DataList استفاده می کنیم.
فرض را بر آن می گیریم که خوانندگان این مقاله با نحوه استفاده از کنترل DataList آشنایی دارند. لذا بیشتر به توضیح کدهای مربوط به اضافه کردن تابع رویداد خارجی می پردازیم.
بسیار خوب، در ابتدا در کلاس مربوط به UC منو، یک کلاس مثلاً بنام SelectionChangedEventArgs تعریف می کنیم. این کلاس می بایست حتماً از کلاس System.EventArgs ارث بری داشته باشد. فعلاً برای این کلاس یک متغیر که نشان دهنده ایندکس انتخاب شده از منو می باشد را تعریف می کنیم. بعداً شما می‌توانید متغیرها و متدهای مورد نظر خود را به این کلاس اضافه کنید. پس تا اینجای کار کلاسی همانند زیر در داخل کلاس مربوط به UC منو داریم.
public class SelectionChangedEventArgs : EventArgs
{
public int SelectedIndex;
}
برای تعریف تابع رویداد، نیار به یک تابع delegate داریم. این تابع delegate را می توان با استفاده از کلاسی که در بالا تعریف کردیم بسازیم. کد مربوط به تعریف تابع delegate و تابع رویداد به شکل زیر می باشد.
public delegate void SelectionChangedEventHandler(object sender, SelectionChangedEventArgs e);
public event SelectionChangedEventHandler SelectionChanged;
برای تحقق یافتن این خواسته‌مان نیاز به یک تابع رویداد داخلی نیز داریم. از آنجا که هدف ما مشخص کردن انتخاب آیتم های کنترل منو می باشد، پس می بایست که تابع رویداد مربوط به تغییر ایندکس انتخاب شده را برای کنترل DataList موجود در UC را اضافه کنیم. پس از انجام این کار نوبت به تعریف تابع اصلی مان می‌رسد. یعنی تابعی که در آن مقدمات مربوط به صدا زدن Event خارجی صورت گیرد. این تابع را بصورت زیر تعریف می کنیم.
public void SelectMenuItem(int index)
{
dlMenu.DataBind();
SelectionChangedEventArgs ev = new SelectionChangedEventArgs();
ev.SelectedIndex = index;
if(SelectionChanged != null)
SelectionChanged(this, ev);
}
همانطور که می‌بینید در این تابع ابتدا کنترل DataList تغذیه می‌شود. سپس یک نمونه از کلاسی که چندی قبل تعریف کردیم ایجاد می‌شود و تنها عضو این کلاس که مشخص کننده ایندکس انتخاب شده می باشد توسط تنها پارامتر این تابع مقداردهی می‌شود. پس از آن در صورت null نبودن تابع رویداد SelectionChanged که مربوط به تابع SelectionChangedEventHandler که خود یک delegate می‌باشد صدا زده می‌شود. این کار باعث می‌شود تا تابع رویدادی که برای این کنترل منو در هرکجا تعریف کرده‌ایم، صدا زده شود.
منبعه : (http://www.irandevelopers.com/programming/callusercontrolfromwebform8712171823-1586/)



کمک.......

hgh.just.hony
شنبه 09 دی 1391, 08:48 صبح
یکی کمک کنه خوب :گریه:

malloc
شنبه 09 دی 1391, 09:15 صبح
ببین این از سایت خود تلریک کمکت میکنه یا نه :
http://www.telerik.com/community/forums/aspnet-ajax/treeview/did-not-implement-icallbackeventhandler-message.aspx

hgh.just.hony
یک شنبه 10 دی 1391, 08:18 صبح
ممنونم
تلریکم ورِژمش 2009 بود. عوضش کردم اما باز همین خطا رو داره
مجیورم کامل بیخیالش بشم
وقتشو ندارم کارم عجله ای
اما جوابو پیداکنم میزارم اینجا:قلب: