[h=2]معرفی کنترل UpdatePannel[/h] آشنایی با کنترل UpdatePannel : کنترل UpdatePannel این امکان را به شما می دهد ، تا برنامه های وب قوی و با رابط کاربری همانند نرم افزارهای دسکتاپ بسازید . به وسیله این کنترل می توانید بخش یا بخش هایی از صفحه را که می خواهید اطلاعات آن تغییر کرده را آپدیت کرده و مانع رفرش شدن و Postback کل صفحه به سرور شوید . به این کار در اصطلاح آپدیت جزیی صفحه می گویند . در جالت ساده ، برای مثال زمانی که می خواهید اطلاعات نمایش داده شده توسط یک کنترل GridView را آپدیت کنید ، این کار مستلزم رفرش شدن و Postback کل صفحه به سرور است . در حالی که با قرار دادن همان کنترل GridView درون یک کنترل UpdatePannel ، در زمان آپدیت فقط کنترل GridView آپدیت شده و بقیه صفحه بدون تغییر یا Postback باقی می مانند . این روش ، حس کار با یک نرم افزار دسکتاپ را به کاربر داده و باعث رضایت بیشتر وی و سرعت بالاتر پاسخگویی صفحه می شود . تمامی این امور را می توانید با قرار دادن یک کنترل UpdatePannel به همراه یک کنترل ScriptManager بر روی صفحه و بدون نیاز به هیچ کدنویسی خاصی انجام دهید . نحوه کار کنترل UpdatePannel : کنترل UpdatePannel ، با جدا کردن بخش مورد نظر از صفحه ، در هنگام به روز رسانی خود ، فقط آن بخش یا بخش های مرتبط را آپدیت کرده و مانع رفرش شدن و Postback کل صفحه می شود .این کار به وسیله یک کنترل ScriptManager و کلاس PageRequestManager در صفحه انجام می شود . در این حالت آپدیت صفحه فقط به بخش یا بخش هایی محدود می شود ، که درون کنترل UpdatePannel بوده و برای ارسال کد مشخص شده اند . مرورگر فقط محتویات آن بخش را برای سرور ارسال می کند ، سپس سرور درخواست را بررسی کرده و جواب آن را حاضر می کند . در آخر جواب حاضر شده به صفحه برگردانده شده و به وسیله متدهای DOM در بخش های HTML مورد نظر اعمال می شود . مثال زیر ، انجام روند اجرای یک صفحه از ابتدا و سپس آپدیت شدن بخش قرار گرفته در کنترل UpdatePannel را به صورت یک دیاگرام نشان می دهد : فعال کردن به روز رسانی بخشی ( partial-page update ) در صفحه : کنترل UpdatePannel ، برای کارکرد صحیح در صفحه ، به یک کنترل ScriptManager نیاز دارد . به صورت پیش فرض ، به روز رسانی بخشی صفحه فعال است ، زیرا مقدار خاصیت EnablePartialRendering کنترل ScriptManager بر روی true تنظیم شده است . کد زیر ، نحوه تعریف و استفاده از یک کنترل ScriptManager و UpdatePannel را به صورت همزمان نشان می دهد . کنترل UpdatePannel شامل یک دکمه فرمان است که در هنگام کلیک بر روی آن ، محتویات درون UpdatePannel به روز می شود . به صورت پیش فرض مقدار خاصیت ChildrenAsTriggers کنترل UpdatePannel بر روی مقدار true تنظیم شده و همین باعث می شود تا کلیک بر روی دکمه فرمان که یک کنترل فرزند UpdatePannel است ، باعث آپدیت محتویات آن شود . [TABLE="class: ex"] [TR] [TD="class: prname"] کد [/TD] [TD="class: prdes, align: left"] <asp:Button ID="Button1" Text="Refresh Panel" runat="server" /> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> <Triggers> <asp:AsyncPostBackTrigger ControlID="Button1" /> </Triggers> <ContentTemplate> <fieldset> <legend>UpdatePanel content</legend> <%=DateTime.Now.ToString() %> </fieldset> </ContentTemplate> </asp:UpdatePanel> [/TD] [/TR] [/TABLE] تعیین محتویات برای کنترل UpdatePannel : می توانید محتویات درونی را برای کنترل UpdatePannel به صورت مستقیم در بخش کد وارد کرده و یا از ابزار ContentTemplate در ویرایشگر ویژوال استودیو استفاده کنید . محتویات کنترل UpdatePannel ، درون تگ باز و بسته <ContentTemplate> آن ، قرار می گیرد . برای اضافه کردن محتویات در حین اجرا و به صورت برنامه ریزی شده ، بایستی از خاصیت ContentTemplateContainer کنترل استفاده نمایید . تعیین کنترل یا کد برای فعال کردن به روز رسانی در کنترل UpdatePannel : به صورت پیش فرض ، هر کنترل درون کنترل UpdatePannel که قابلیت Postback داشته باشد ، در هنگام تغییر ، باعث رفرش شدن و آپدیت محتویات درونی کنترل UpdatePannel می شود . همچنین می توانید کنترل دیگری که خارج از کنترل UpdatePannel وجود دارد را نیز ، برای رفرش کردن آن تنظیم نمایید . این کار با تعیین یک trigger برای کنترل UpdatePannel انجام می شود . trigger ، کنترل یا رویدادی است که باعث می شود تا محتویات درون کنترل UpdatePannel رفرش شود . برای مثال یک دکمه فرمان . کد زیر نشان می دهد که چگونه یک دکمه فرمان را برای رفرش کردن محتویات یک کنترل UpdatePannel به کار ببرید : [TABLE="class: ex"] [TR] [TD="class: prname"] کد [/TD] [TD="class: prdes, align: left"] <asp:Button ID="Button1" Text="Refresh Panel" runat="server" /> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> <Triggers> <asp:AsyncPostBackTrigger ControlID="Button1" /> </Triggers> <ContentTemplate> <fieldset> <legend>UpdatePanel content</legend> <%=DateTime.Now.ToString() %> </fieldset> </ContentTemplate> </asp:UpdatePanel> [/TD] [/TR] [/TABLE] trigger به وسیله تگ <asp:AsyncPostBackTrigger> درون المنت <Triggers> کنترل UpdatePannel تعیین می شود . ( در محیط ویژوال استودیو می توانید برای کنترل مورد نظرتان ، trigger هایی را به وسیله پنجره UpdatePanelTrigger Collection Editor ایجاد نمایید ) . کنترل های UpdatePannel چگونه رفرش می شوند : لیست زیر تعیین می کند که چگونه و چه زمانی کنترل UpdatePannel رفرش شود : اگر مقدار خاصیت UpdateMode را روی Always تنظیم کنید ، کنترل UpdatePannel با هر Postback ای ، از هر نقطه یا کنترلی در صفحه رفرش می شود . این مسله شامل تمام کنترل هایی که چه درون UpdatePannel هستند یا بیرون آن ، صدق می کند . اگر مقدار خاصیت UpdateMode را روی Conditional کفه مقدار پیش فرض است ، فقط در حالات زیر محتویات کنترل به روز می شود : هنگامی که یک Postback یا trigger برای کنترل UpdatePannel فعال شود . هنگامی که به صورت مستقیم رویداد Update کنترل UpdatePannel را فراخوانی نمایید . هنگامی که کنترل UpdatePannel در یک کنترل دیگر UpdatePannel قرار دارد و کنترل مادر parent آن ، به روز می شود . هنگامی که مقدار خاصیت ChildrenAsTriggers کنترل روی true تنظیم شده باشد و یک کنترل فرزند درونی آن عمل Postback را انجام دهد . منبع: developer1