آموزش ASP.Net > کنترل های Ajax > کنترل UpdatePanel
آشنایی با کنترل 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
است ، باعث آپدیت محتویات آن شود .
کد
|
<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>
|
تعیین محتویات برای کنترل UpdatePannel :
می توانید محتویات درونی را برای کنترل UpdatePannel به صورت مستقیم در بخش کد وارد
کرده و یا از ابزار ContentTemplate در ویرایشگر ویژوال استودیو استفاده کنید .
محتویات کنترل UpdatePannel ، درون تگ باز و بسته <ContentTemplate> آن ، قرار
می گیرد . برای اضافه کردن محتویات در حین اجرا و به صورت برنامه ریزی شده ، بایستی
از خاصیت ContentTemplateContainer کنترل استفاده نمایید .
تعیین کنترل یا کد برای فعال کردن به روز رسانی در کنترل UpdatePannel :
به صورت پیش فرض ، هر کنترل درون کنترل UpdatePannel که قابلیت Postback
داشته باشد ، در هنگام تغییر ، باعث رفرش شدن و آپدیت محتویات درونی کنترل UpdatePannel
می شود .
همچنین می توانید کنترل دیگری که خارج از کنترل UpdatePannel وجود دارد را نیز ، برای
رفرش کردن آن تنظیم نمایید . این کار با تعیین یک trigger برای کنترل UpdatePannel
انجام می شود . trigger ، کنترل یا رویدادی است که باعث می شود تا محتویات درون کنترل
UpdatePannel رفرش شود . برای مثال یک دکمه فرمان .
کد زیر نشان می دهد که چگونه یک دکمه فرمان را برای رفرش کردن محتویات یک کنترل UpdatePannel
به کار ببرید :
کد
|
<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>
|
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
حمایت نمایید :