2009/11/26

‫نکاتی تخصصی درباره‌ی UpdatePanel

سرعت بیشتر با آژاکس!! اگر تا حالا سعی کرده باشید با ASP.NET AJAX (راه حل مایکروسافت برای آژاکسی کردن ASP.NET) کار کرده باشید، در برخورد با کنترل UpdatePanel اقلاً برای یک بار هم که شده با خود فکر کرده‌اید کار با آن خیلی ساده است. اما این فقط ظاهر ماجراست چون آژاکسی کردن با UpdatePanel مشکلات خاص خود را داشته و نیاز به تکنیک‌های خاصی برای حل مشکلات آن هست. در ادامه به مرور چند تا از این مشکلات یا تکنیک‌ها که عمدتاً در بخش ‫۷-۳‬‏ و ‫۷-۴‬ فصل ۷ کتاب ASP.NET Ajax in Action آمده است می‌پردازیم:

۱- تزریق کدهای جاوا اسکریپت که قبلا از طریق Page.ClientScript انجام شد حالا باید از طریق متودهای ScriptManager مثل ScriptManager.RegisterStartupScript انجام شود.

۲- همراه با کنترل UpdatePanel دیگر نمی‌توان از Server.Transfer و Response.Write استفاده کرد. در مورد Server.Transfer باید event کنترل مربوطه، یعنی آن کنترلی که Server.Transfer در کد event آن صدا می‌شود را به عنوان PostBackTrigger کنترل UpdatePanel معرفی کنید. در مورد Response.Write هم اگر صرفاً استفاده‌های دیباگ دارید، یعنی از آن در جاهای مختلف برنامه برای نمایش یک پیغام ساده در صفحه استفاده کرده‌اید بهتر است از معادل جاوا اسکریپتی آن یعنی Sys.Debug.trace به همراه ابزارهایی مثل FireBug استفاده کنید.

۳- تا آنجا که می‌شود UpdatePanel کد کمتری را در بر گیرد. هر چقدر که کدهای محصور شده در ContentTemplate آن کمتر باشد Performance بهتری به دست می‌آید.

۴- UpdatePanel یک property دارد به اسم UpdaetMode. با این که حالت پیش فرض این property برابر Always است سعی کنید آن را همیشه در حالت Conditional نگه دارید مگر آن که مجبور شوید از حالت Always استفاده کنید. این property به UpdatePanel می‌گوید چه وقت‌هایی Update شود و چه وقت‌هایی نشود. این تنظیم صرفاً بر روی Performance تاثیر دارد.

۵- قطع ارتباط کنترل‌های سنگینی مثل GridView از parentشان به وسیله کد جاوا اسکریپت control.parentNode.removeNode(gv)‎. این قطع ارتباط بایستی در pageLoading مربوط به PageRequestManager انجام شود.

۶- وقتی که یک صفحه با UpdatePanel آژاکسی شده است به هنگام کار با آن تا نتیجه یک PostBack آسنکرون از سرور بر نگشته است کاری نکنید که صفحه برای بار دوم و سوم و… PostBack بخورد. چون ASP.NET AJAX نمی‌تواند چند PostBack آسنکرون همزمان را به درستی مدیریت کرده و ممکن است دچار گیجی شود.

۷- بعضی کنترل‌ها هستند که کلاً با UpdatePanel مشکل دارند، برای رفع مشکل این طور کنترل‌ها باید منتظر نسخه‌های بعدی dot net framework باشید. FileUpload نمونه‌ای از کنترل‌هایی بود که در framework 2.0 مشکل داشت و احتمالاً تا حالا (زمان انتشار نسخه‌ی بتا ۲ ویژوال استودیو ۲۰۱۰) مشکلش حل شده باشد.

منبع: فصل ۷ کتاب ASP.NET Ajax in Action

مطالعه بیشتر:
۱- آشنایی با کتابخانه Microsoft Ajax Library
۲- جاوا اسکریپتی قوی‌تر با Microsoft Ajax Library
۳- ‫فراخوانی Web Service از Client Side