1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

آموزش Ajax/معرفی کنترل UpdatePannel

شروع موضوع توسط Amon Amarth ‏22/4/13 در انجمن Ajax

  1. کاربر ارشد

    تاریخ عضویت:
    ‏7/6/12
    ارسال ها:
    12,082
    تشکر شده:
    28,151
    امتیاز دستاورد:
    113
    جنسیت:
    مرد
    [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
     
    یک شخص از این تشکر کرد.