آبجی
14th February 2010, 05:10 PM
تما تا به حال کدهایی رو دیدید یا نوشتید که به نظر هیچ مشکلی ندارن اما در عمل کاری که ازشون انتظار میره رو انجام نمیدن (به کدها شخصیت دادم! :D)
خوبه که از این به بعد در برخی مطالب این وبلاگ به بعضی از این کدها اشاره کنم…
در جایی نیاز بود که در روال RowDataBound کنترل GridView، قبل از اجرای روال Server-Side دکمه، یک روال Client-Side اجرا بشه.
تابع JS من یک پارامتر ورودی داشت که نام یک TextBox رو میپذیرفت.
ما انسان ها معمولا از خاصیت جدید OnClientClick دکمه ها در ASP.NET 2.0 بدین منظور استفاده می کنیم.
myButton.OnClientClick = “return myFunction(’myTextBox’);”
این TextBox در Footer قرار داشت و نامش مشخص بود.
به نظر کد فوق باید به درستی کار کنه! غیر از اینه؟
اما نه! انگار نه انگار که روال Client-Side ای تعریف شده!
در این مواقع چه باید کرد؟ کمی جانگولر بازی! کمی ور رفتن با کدها…
جانگولر بازی من به شکل زیر بود:
myButton.OnClientClick = String.Concat(”return myFunction(’”, e.Row.FindControl(”myTextBox”).ClientID, “‘);”)
و حالا جواب داد!
تفاوت کدهای فوق در چیه؟ هیچی!
اگر سورس HTML صفحه رو در هر دو حالت ببینید هیچ تفاوتی مشاهده نمیشه اما عجیب اینکه تنها کد دوم کار میکنه!
خوبه که از این به بعد در برخی مطالب این وبلاگ به بعضی از این کدها اشاره کنم…
در جایی نیاز بود که در روال RowDataBound کنترل GridView، قبل از اجرای روال Server-Side دکمه، یک روال Client-Side اجرا بشه.
تابع JS من یک پارامتر ورودی داشت که نام یک TextBox رو میپذیرفت.
ما انسان ها معمولا از خاصیت جدید OnClientClick دکمه ها در ASP.NET 2.0 بدین منظور استفاده می کنیم.
myButton.OnClientClick = “return myFunction(’myTextBox’);”
این TextBox در Footer قرار داشت و نامش مشخص بود.
به نظر کد فوق باید به درستی کار کنه! غیر از اینه؟
اما نه! انگار نه انگار که روال Client-Side ای تعریف شده!
در این مواقع چه باید کرد؟ کمی جانگولر بازی! کمی ور رفتن با کدها…
جانگولر بازی من به شکل زیر بود:
myButton.OnClientClick = String.Concat(”return myFunction(’”, e.Row.FindControl(”myTextBox”).ClientID, “‘);”)
و حالا جواب داد!
تفاوت کدهای فوق در چیه؟ هیچی!
اگر سورس HTML صفحه رو در هر دو حالت ببینید هیچ تفاوتی مشاهده نمیشه اما عجیب اینکه تنها کد دوم کار میکنه!