__H2__
دوشنبه 24 اردیبهشت 1386, 14:08 عصر
سلام
بحث بر سر هندلینگ رویدادها در ASP.Net است.
یک event غیر static داریم و میخواهیم آنرا به یک متد Static هندلر کنم تا با وقوع رویداد متد مورد نظر اجرا شود.
طبیعتاً میتوان از هندلینگ runtime با کمک اپراتور =+ استفاده کنیم.
ولی وقتی کنترلر مورد نظر منبع رویداد قرار باشد در یک ستون از یک DataGrid وبی تکثیر شود، مشکلی پیش نمی آید!
مثلاً فرض کنید دکمه ای ASP.Net ای را در ستون GridView قرار داده ایم و این دکمه به تعداد سطرهای GridView تکثیر و نمایش داده میشود، برای رویداد کلیک شدن آن طبیعتاً باید از خطی مشابه "OnClick="MethodName استفاده کرد، VB.Net در هیچ شرایطی با این مسئله مشکلی ندارد ولی اگر MethodName یک رویه static باشد، #C خطا میدهد، امیدوارم متوجه شده باشید! حال در #C چه باید کرد؟؟؟؟
در اصل من یک کنترلر درست کرده ام (لینک توضیحات (http://www.h-two.info/Products/H2GBN/Default.aspx?Item=Web.UI.WebControls.PictureBox) و لینک دانلود کد نمونه (http://www.h-two.info/Download.aspx?File=Asp.NetRuntimeImages.zip)) این کنترلر رویدادی غیر static دارد که باید به متدی static هندلر شود، وقتی فقط یک نمونه از این کنترلر موجود در صفحه وب بخواهیم مشکلی نیست و با اپراتور =+ به راحتی هندلینگ انجام میشود (صفحه PictureBoxCSharp.aspx در کد نمونه) ولی وقتی به تعداد زیاد در GridView تکثیر میشود این راه جواب نمیدهد روش معمول هم جواب نمیدهد. (صفحه DataGridCSharp.aspx در کد نمونه) در نتیجه مجبور شده ام متدی جدید فقط برای استفاده صحیح از این کنترلر در محیط #C به این کنترلر اضافه کنم (یک property با نام OnGetImageOfKeyCSharp!)، که برای استفاده از این کنترلر در محیط VB.Net اصلاً نیازی به این متد بیریخت و اضافه نیست.
اگر دوستان راهی #C کار بتوانند نیمچه خط کد "OnGetImageOfKey="PictureBox_GetImageOfKey را به #C تبدیل کنند و در اصل فایل نمونه DataGridCSharp.aspx موجود در کد نمونه را طوری تغییر دهند که درست کار کند ولی از مشخصه OnGetImageOfKeyCSharp در آن استفاده نشده باشد، ممنونشان میشوم.
پیشاپیش از دوستان تشکر میکنم.
بحث بر سر هندلینگ رویدادها در ASP.Net است.
یک event غیر static داریم و میخواهیم آنرا به یک متد Static هندلر کنم تا با وقوع رویداد متد مورد نظر اجرا شود.
طبیعتاً میتوان از هندلینگ runtime با کمک اپراتور =+ استفاده کنیم.
ولی وقتی کنترلر مورد نظر منبع رویداد قرار باشد در یک ستون از یک DataGrid وبی تکثیر شود، مشکلی پیش نمی آید!
مثلاً فرض کنید دکمه ای ASP.Net ای را در ستون GridView قرار داده ایم و این دکمه به تعداد سطرهای GridView تکثیر و نمایش داده میشود، برای رویداد کلیک شدن آن طبیعتاً باید از خطی مشابه "OnClick="MethodName استفاده کرد، VB.Net در هیچ شرایطی با این مسئله مشکلی ندارد ولی اگر MethodName یک رویه static باشد، #C خطا میدهد، امیدوارم متوجه شده باشید! حال در #C چه باید کرد؟؟؟؟
در اصل من یک کنترلر درست کرده ام (لینک توضیحات (http://www.h-two.info/Products/H2GBN/Default.aspx?Item=Web.UI.WebControls.PictureBox) و لینک دانلود کد نمونه (http://www.h-two.info/Download.aspx?File=Asp.NetRuntimeImages.zip)) این کنترلر رویدادی غیر static دارد که باید به متدی static هندلر شود، وقتی فقط یک نمونه از این کنترلر موجود در صفحه وب بخواهیم مشکلی نیست و با اپراتور =+ به راحتی هندلینگ انجام میشود (صفحه PictureBoxCSharp.aspx در کد نمونه) ولی وقتی به تعداد زیاد در GridView تکثیر میشود این راه جواب نمیدهد روش معمول هم جواب نمیدهد. (صفحه DataGridCSharp.aspx در کد نمونه) در نتیجه مجبور شده ام متدی جدید فقط برای استفاده صحیح از این کنترلر در محیط #C به این کنترلر اضافه کنم (یک property با نام OnGetImageOfKeyCSharp!)، که برای استفاده از این کنترلر در محیط VB.Net اصلاً نیازی به این متد بیریخت و اضافه نیست.
اگر دوستان راهی #C کار بتوانند نیمچه خط کد "OnGetImageOfKey="PictureBox_GetImageOfKey را به #C تبدیل کنند و در اصل فایل نمونه DataGridCSharp.aspx موجود در کد نمونه را طوری تغییر دهند که درست کار کند ولی از مشخصه OnGetImageOfKeyCSharp در آن استفاده نشده باشد، ممنونشان میشوم.
پیشاپیش از دوستان تشکر میکنم.