تصدير (0) طباعة
توسيع الكل
هذه المقالة مترجمة آليًا. حرك المؤشر فوق الجمل في المقالة لعرض النص الأصلي. المزيد من المعلومات.
الترجمة
الأصلي

UpdatePanel الفئة

.NET Framework 4

تمكن مقاطع من صفحة إلى سيتم عرضها جزئيا بدون إعادة النشر.

مساحة الاسم:  System.Web.UI
التجميع:  System.Web.Extensions (في System.Web.Extensions.dll)

public class UpdatePanel : Control, 
	IAttributeAccessor
<asp:UpdatePanel />

في هذا الموضوع:

مقدمة

UpdatePanel تكون عناصر تحكم جزء مركزي من وظائف AJAX في ASP.NET. ويتم استخدامها مع ScriptManagerعنصر تحكم لتمكين عرض صفحة الجزئي. التقديم جزئيا من صفحة يقلل الحاجة إلى postbacks متزامن و إتمام تحديثات الصفحة عندما يكون جزء فقط من الصفحة ليتم تحديثه. رسم هندسي جزئيا من صفحة بتحسين أسلوب عمل مستخدم لأنه يؤدي إلى تقليل وميض شاشة التي تحدث أثناء إعادة النشر صفحة كاملة و تحسن التبادلية على صفحة ويب.

تحديث تحديث اللوحة محتوى

عند عرض صفحة الجزئي هو ممكنة، عنصر تحكم يمكن القيام بإعادة النشر بتحديث الصفحة بالكامل أو إعادة النشر غير متزامن بتحديث محتوى واحد أو المزيد UpdatePanelعناصر التحكم. ما إذا كان عنصر تحكم تسبب غير متزامن إعادة النشر وقم بتحديث UpdatePanelعنصر تحكم يعتمد تشغيل ما يلي:

  • إذا UpdateModeخاصية UpdatePanelعنصر التحكم هو تعيين إلى Always، UpdatePanelمحتوى عنصر التحكم هو محدث تشغيل كل إعادة النشر التي تنشأ من الصفحة. يتضمن ذلك postbacks غير متزامنة من عناصر التحكم الموجودة داخل الأخرى UpdatePanelعناصر التحكم و postbacks من عناصر التحكم التي ليست داخل UpdatePanelعناصر التحكم.

  • إذا UpdateModeخاصية هو تعيين إلى Conditional، UpdatePanelمحتوى عنصر التحكم هو محدثها في الحالات التالية:

    • عندما تقوم باستدعاء Updateطريقة UpdatePanelعنصر تحكم صراحة.

    • عند UpdatePanelعنصر التحكم هو تداخل داخل آخر UpdatePanelعنصر التحكم، ولوحة الأصل هو محدثها.

    • عند إعادة النشر السبب هو عنصر تحكم المحدد كمشغل بواسطة استخدام Triggersخاصية UpdatePanelعنصر التحكم. في هذا السيناريو، عنصر تحكم بوضوح يقوم بتشغيل تحديث محتوى لوحة. يمكن أن يكون عنصر التحكم داخل أو خارج UpdatePanelالتحكم التي يشغّل هو المقترنة.

    • عند ChildrenAsTriggersتعيين خاصية إلى trueوعنصر تحكم فرع UpdatePanelيؤدي عنصر التحكم إعادة النشر. تابع عنصر تحكم s UpdatePanelعنصر تحكم s المتداخلة لا تؤدي عملية تحديث خارجية UpdatePanelعنصر تحكم إلا إذا كانت هي المعرفة بوضوح مشغلات.

التركيبة من إعداد ChildrenAsTriggersخاصية إلى falseو UpdateModeخاصية إلى Alwaysهو غير مسموح به وسيتم طرح على ‏‏ استثناء.

عند UpdatePanelيقوم بالتحكم غير متزامن ما بعد، يقوم Access بإضافة مخصص HTTP الرأس. قم بإزالة بعض وكلاء هذا عنوان HTTP مخصص. في حالة حدوث ذلك، الملقم معالجة الطلب كـ إعادة النشر عادي، مما يؤدي إلى خطأ عميل. لحل هذه المشكلة، بإدراج حقل نموذج مخصص عند تنفيذ غير متزامن عمليات النشر. ثم تحقق من الرأس أو حقل نموذج المخصص في تعليمات الخادم البرمجية.

استخدام تحديث اللوحة

يمكنك استخدام عدة UpdatePanelعناصر التحكم لتحديث مناطق مختلفة من الصفحة بشكل مستقل. عند الصفحة التي تحتوي على واحد أو المزيد UpdatePanelعناصر هو عرض أولاً، المحتوى بالكامل لكافة UpdatePanelتقديم عناصر التحكم وإرسالها إلى مستعرض. تشغيل postbacks غير متزامن اللاحقة، محتويات كل UpdatePanelعنصر تحكم قد لا يتم محدث استناداً إلى إعدادات اللوحة وتشغيل منطق عميل أو الخادم للوحات فردية.

يمكنك أيضا استخدام UpdatePanelعناصر التحكم في السيناريوهات التالية:

  • في مستخدم عناصر التحكم.

  • تشغيل شكل رئيسي و محتوى الصفحات.

  • تداخل داخل الأخرى UpdatePanelعناصر التحكم.

  • يتحكم templated الداخلية مثل كـ GridViewأو Repeaterعناصر التحكم.

UpdatePanel عناصر التحكم يمكن إضافته برمجياً أو بشكل إلزامي.

يمكنك إضافة UpdatePanelعنصر تحكم برمجياً، ولكن لا يمكنك إضافة مشغلات برمجياً. لإنشاء يشغّل سلوك، يمكنك تسجيل عنصر تحكم على الصفحة غير متزامن إعادة النشر عنصر التحكم. يمكنك القيام بذلك بواسطة استدعاء RegisterAsyncPostBackControlطريقة ScriptManagerعنصر تحكم. وبذلك يمكنك إنشاء معالج أحداث الذي يعمل كاستجابة غير متزامن إعادة النشر، وفي المعالج، قم باستدعاء Updateأسلوب UpdatePanelعنصر التحكم.

تطبيق الأنماط

UpdatePanel عنصر تحكم يقبل expando السمات. يتيح هذا إمكانية تعيين فئة CSS HTML العناصر التي عناصر التحكم Render. ل مثال، قد تقوم بإنشاء ترميز في ما يلي مثال:

<asp:UpdatePanel runat="server" class="myStyle">
</asp:UpdatePanel> 

يعرض ترميز في المثال السابق HTML مشابهة إلى التالية عند تشغيل الصفحة:

<div id="ctl00_MainContent_UpdatePanel1" class="MyStyle">
</div>

بناء جملة مصرحة

<asp:UpdatePanel
    ChildrenAsTriggers="True|False"
    EnableTheming="True|False"
    EnableViewState="True|False"
    ID="string"
    OnDataBinding="DataBinding event handler"
    OnDisposed="Disposed event handler"
    OnInit="Init event handler"
    OnLoad="Load event handler"
    OnPreRender="PreRender event handler"
    OnUnload="Unload event handler"
    RenderMode="Block|Inline"
    runat="server"
    SkinID="string"
    UpdateMode="Always|Conditional"
    Visible="True|False"
>
    <ContentTemplate>
        <!-- child controls -->
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger 
            ControlID="string"
            EventName="string"
        />
        <asp:PostBackTrigger 
            ControlID="string"
        />
    </Triggers>
</asp:UpdatePanel>

تبين الأمثلة التالية استخدامات مختلفة UpdatePanelعنصر تحكم.

عناصر التحكم داخل عنصر تحكم تحديث اللوحة

يظهر المثال التالي كيفية وضع عنصر تحكم s داخل UpdatePanelعنصر تحكم لتقليل وميض شاشة عندما تقوم بالنشر إلى الملقم. في this مثال, a Calendar و a DropDownList عنصر تحكم are inside an UpdatePanel عنصر تحكم. بشكل افتراضي، UpdateModeخاصية هو Alwaysو ChildrenAsTriggersهو خاصية true. Therefore, فرع عناصر التحكم of the لوحة cause an غير متزامن إعادة النشر.



<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    void DropDownSelection_Change(Object sender, EventArgs e)
    {
        Calendar1.DayStyle.BackColor =
            System.Drawing.Color.FromName(ColorList.SelectedItem.Value);
    }

    protected void Calendar1_SelectionChanged(object sender, EventArgs e)
    {
        SelectedDate.Text = 
            Calendar1.SelectedDate.ToString();
    }

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>UpdatePanel Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" 
                               runat="server" />
            <asp:UpdatePanel ID="UpdatePanel1"
                             runat="server">
                <ContentTemplate>
                    <asp:Calendar ID="Calendar1" 
                                  ShowTitle="True"
                                  OnSelectionChanged="Calendar1_SelectionChanged"
                                  runat="server" />
                    <div>
                        Background:
                        <br />
                        <asp:DropDownList ID="ColorList" 
                                          AutoPostBack="True" 
                                          OnSelectedIndexChanged="DropDownSelection_Change"
                                          runat="server">
                            <asp:ListItem Selected="True" Value="White"> 
                            White </asp:ListItem>
                            <asp:ListItem Value="Silver"> 
                            Silver </asp:ListItem>
                            <asp:ListItem Value="DarkGray"> 
                            Dark Gray </asp:ListItem>
                            <asp:ListItem Value="Khaki"> 
                            Khaki </asp:ListItem>
                            <asp:ListItem Value="DarkKhaki"> D
                            ark Khaki </asp:ListItem>
                        </asp:DropDownList>
                    </div>
                    <br />
                    Selected date:
                    <asp:Label ID="SelectedDate" 
                               runat="server">None.</asp:Label>
                </ContentTemplate>
            </asp:UpdatePanel>
            <br />
        </div>
    </form>
</body>
</html>


السيناريو رئيسي/تفصيلي مع تحديث اللوحة عناصر التحكم

في المثال التالي، UpdatePanelعنصر التحكم هو المستخدم في سيناريو رئيسي/تفصيلي تعرض الطلبات وتفاصيل الطلب من قاعدة بيانات Northwind. واحد UpdatePanelيحتوي على عنصر تحكم GridViewعنصر التحكم الذي يعرض قائمة من الطلبات. ثاني UpdatePanelعنصر تحكم يحتوي على DetailsViewعنصر تحكم الذي يعرض التفاصيل من ترتيب واحد. عند تحديد أحد الطلبات من أول جدول، يتم عرض التفاصيل الخاصة بهذا الترتيب في الثانية جدول. الجدول الثاني هو محدثها بشكل غير متزامن استناداً إلى تحديد الموجود في الجدول أول. فرز و ترحيل العمليات في جدول خلاصة طلبيات أيضا أن يسبب تحديثات الجزئية.


<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        SqlDataSource2.SelectParameters["OrderID"].DefaultValue = 
            GridView1.SelectedDataKey.Value.ToString();
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>UpdatePanel Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1"
                               runat="server" />
            <asp:UpdatePanel ID="OrdersPanel"
                             UpdateMode="Conditional"
                             runat="server">
                <ContentTemplate>
                    <asp:GridView ID="GridView1" 
                                  AllowPaging="True"
                                  AllowSorting="True"
                                  Caption="Orders"
                                  DataKeyNames="OrderID"
                                  DataSourceID="SqlDataSource1"
                                  OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
                                  runat="server" >
                    <Columns>
                    <asp:CommandField ShowSelectButton="True"></asp:CommandField>
                    </Columns>
                    </asp:GridView>
                    <asp:SqlDataSource ID="SqlDataSource1"
                                       runat="server"
                                       ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
                                       SelectCommand="SELECT [OrderID], [CustomerID], [EmployeeID], [OrderDate] FROM [Orders]">
                    </asp:SqlDataSource>
                </ContentTemplate>
            </asp:UpdatePanel>
            <asp:UpdatePanel ID="OrderDetailsPanel"
                             UpdateMode="Always"
                             runat="server">
                <ContentTemplate>
                    <asp:DetailsView ID="DetailsView1"
                                     Caption="Order Details"
                                     DataKeyNames="OrderID,ProductID"
                                     DataSourceID="SqlDataSource2"
                                     runat="server">
                        <EmptyDataTemplate>
                        <i>Select a row from the Orders table.</i>
                        </EmptyDataTemplate>
                    </asp:DetailsView>
                    <asp:SqlDataSource ID="SqlDataSource2"
                                       ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
                                       SelectCommand="SELECT [OrderID], [ProductID], [UnitPrice], [Quantity], [Discount] FROM [Order Details] WHERE ([OrderID] = @OrderID)"
                                       runat="server">
                        <SelectParameters>
                            <asp:Parameter Name="OrderID"
                                           Type="Int32" />
                        </SelectParameters>
                    </asp:SqlDataSource>
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
    </form>
</body>
</html>


إذا قمت بوضع GridViewالتحكم داخل UpdatePanelإعداد عنصر تحكم خاصية إلى GridViewعنصر التحكمEnableSortingAndPagingCallbackstrueهو غير معتمد. على الرغم من ذلك، لأن UpdatePanelعنصر تحكم يدعم postbacks غير متزامنة، postbacks أي تغيير GridViewعنصر تحكم داخل UpdatePanelعنصر تحكم يؤدي نفس سلوك كفرز والترحيل بعمليات الاسترجاعات.

استخدام عنصر تحكم تحديث اللوحة في قالب

في المثال التالي، UpdatePanelعنصر التحكم هو المستخدمة في القالب العنصر من GridViewعنصر التحكم. UpdatePanel يتم إنشاء عناصر التحكم في كل صف من بيانات تلقائياً. لكل صف UpdatePanelعنصر تحكم يحتوي على Labelعنصر تحكم لعرض كمية العنصر في ذلك الصف Buttonعنصر تحكم إلى إنقاص وزيادة كمية.



<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    private void ChangeQuantity(object sender, int delta)
    {
        Label quantityLabel = (Label)((Button)sender).FindControl("QuantityLabel");
        int currentQuantity = Int32.Parse(quantityLabel.Text);
        currentQuantity = Math.Max(0, currentQuantity + delta);
        quantityLabel.Text = currentQuantity.ToString(System.Globalization.CultureInfo.InvariantCulture);
    }

    private void OnDecreaseQuantity(object sender, EventArgs e)
    {
        ChangeQuantity(sender, -1);
    }

    private void OnIncreaseQuantity(object sender, EventArgs e)
    {
        ChangeQuantity(sender, 1);
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("Beverage order:<br/>");
        foreach (GridViewRow row in GridView1.Rows)
        {
            if (row.RowType == DataControlRowType.DataRow)
            {
                Label quantityLabel = (Label)row.FindControl("QuantityLabel");
                int currentQuantity = Int32.Parse(quantityLabel.Text);
                sb.Append(row.Cells[0].Text + " : " + currentQuantity + "<br/>");
            }
        }
        SummaryLabel.Text = sb.ToString();

    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>UpdatePanel Inside GridView Template Example </title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" 
                               runat="server" />
            <asp:GridView ID="GridView1" 
                          AutoGenerateColumns="False"
                          DataSourceID="SqlDataSource1"
                          runat="server">
                <Columns>
                    <asp:BoundField DataField="ProductName" 
                                    HeaderText="ProductName" />
                    <asp:BoundField DataField="UnitPrice"
                                    HeaderText="UnitPrice" />
                    <asp:TemplateField HeaderText="Quantity">
                        <ItemTemplate>
                            <asp:UpdatePanel ID="QuantityUpdatePanel"
                                             UpdateMode="Conditional"
                                             runat="server" >
                                <ContentTemplate>
                                    <asp:Label ID="QuantityLabel"
                                               Text="0"
                                               runat="server" />
                                    <asp:Button ID="DecreaseQuantity"
                                                Text="-"
                                                OnClick="OnDecreaseQuantity"
                                                runat="server" />
                                    <asp:Button ID="IncreaseQuantity" 
                                                Text="+"
                                                OnClick="OnIncreaseQuantity"
                                                runat="server" />
                                </ContentTemplate>
                            </asp:UpdatePanel>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>            
            <asp:UpdatePanel ID="SummaryUpdatePanel" 
                             UpdateMode="Conditional"
                             runat="server">
                <ContentTemplate>
                    <asp:Button ID="Button1"
                                OnClick="Button1_Click"
                                Text="Get Summary"
                                runat="server" />
                    <br />
                    <asp:Label ID="SummaryLabel"
                               runat="server">
                    </asp:Label>
                </ContentTemplate>
            </asp:UpdatePanel>
            <asp:SqlDataSource ID="SqlDataSource1"
                               ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
                               SelectCommand="SELECT [ProductName], [UnitPrice] FROM 
                               [Alphabetical list of products] WHERE ([CategoryName] 
                               LIKE '%' + @CategoryName + '%')"
                               runat="server">
                <SelectParameters>
                    <asp:Parameter DefaultValue="Beverages"
                                   Name="CategoryName"
                                   Type="String" />
                </SelectParameters>
            </asp:SqlDataSource>
        </div>
    </form>
</body>
</html>


يتم تأمين العملية الجزئية لأي عضو عمومي ثابت (مشترك في Visual Basic) من هذا النوع. لن يتم ضمان تأمين العملية الجزئية لأي عضو مثيل.

نظام التشغيل Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, نظام التشغيل Windows Server 2003

لا يدعم .NET Framework و .NET Compact Framework كافة الإصدارات الخاصة بكل نظام أساسي. للحصول على قائمة بالإصدارات المدعمة، راجع متطلبات النظام إطار عمل .NET.

.NET Framework

مدعوم في: 4, 3.5

إضافات المجتمع

إضافة
إظهار:
© 2015 Microsoft