UpdatePanel.UpdateMode Свойство

Определение

Возвращает или задает значение, указывающее, когда обновляется содержимое элемента управления UpdatePanel.

public:
 property System::Web::UI::UpdatePanelUpdateMode UpdateMode { System::Web::UI::UpdatePanelUpdateMode get(); void set(System::Web::UI::UpdatePanelUpdateMode value); };
public System.Web.UI.UpdatePanelUpdateMode UpdateMode { get; set; }
member this.UpdateMode : System.Web.UI.UpdatePanelUpdateMode with get, set
Public Property UpdateMode As UpdatePanelUpdateMode

Значение свойства

UpdatePanelUpdateMode

Одно из значений перечисления UpdatePanelUpdateMode. Значение по умолчанию — Always.

Исключения

Указанный тип не является одним из значений UpdatePanelUpdateMode.

Примеры

В следующем примере объявляется два UpdatePanel элемента управления. На первой панели UpdateMode свойство имеет значение Conditional. На второй панели UpdateMode задано значение Always. Кнопка за пределами обеих панелей регистрируется как асинхронный элемент управления обратной ScriptManager передачи путем вызова RegisterAsyncPostBackControl метода элемента управления. В обработчике событий кнопки Click метод первой панели вызывается, Update если с момента последнего обновления прошло более пяти секунд. В этом сценарии содержимое панели обновляется только в том случае, если последнее обновление панели было более пяти секунд назад. Содержимое второй панели всегда обновляется.


<%@ 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 DateTime LastUpdate
    {
        get
        {
            return (DateTime)(ViewState["LastUpdate"] ?? DateTime.Now);
        }
        set
        {
            ViewState["LastUpdate"] = value;
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (LastUpdate.AddSeconds(5.0) < DateTime.Now)
        {
            UpdatePanel1.Update();
            LastUpdate = DateTime.Now;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {

        ScriptManager1.RegisterAsyncPostBackControl(Button1);   
        if (!IsPostBack)
        {
            LastUpdate = DateTime.Now;
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>UpdatePanelUpdateMode Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1"
                               runat="server" />
            <asp:Panel ID="Panel1"
                       GroupingText="UpdatePanel1"
                       runat="server">
                <asp:UpdatePanel ID="UpdatePanel1"
                                 UpdateMode="Conditional"
                                 runat="server">
                    <ContentTemplate>
                        <p>
                            The content in this UpdatePanel only refreshes if five or more
                            seconds have passed since the last refresh and the button in
                            UpdatePanel2 was clicked. The time is checked
                            server-side and the UpdatePanel.Update() method is called. Last
                            updated: <strong>
                                <%= LastUpdate.ToString() %>
                            </strong>
                        </p>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </asp:Panel>
            <asp:Panel ID="Panel2"
                       GroupingText="UpdatePanel2"
                       runat="server">
                <asp:UpdatePanel ID="UpdatePanel2"
                                 runat="server">
                    <ContentTemplate>
                        <p>
                            This UpdatePanel always refreshes if the button is clicked.
                            Last updated: <strong>
                                <%= DateTime.Now.ToString() %>
                            </strong>
                        </p>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </asp:Panel>
            <asp:Button ID="Button1" Text="Button1" runat="server" OnClick="Button1_Click" />
        </div>
    </form>
</body>
</html>

<%@ Page Language="VB" %>

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

<script runat="server">
    Protected Property LastUpdate() As DateTime
        Get
            If ViewState("LastUpdate") IsNot Nothing Then
                Return ViewState("LastUpdate")
            Else : Return DateTime.Now()
            End If
        End Get
        Set(ByVal Value As DateTime)
            ViewState("LastUpdate") = Value
        End Set
    End Property

    Protected Sub Button1_Click(ByVal Sender As Object, ByVal E As EventArgs)
        If (LastUpdate.AddSeconds(5.0) < DateTime.Now) Then
            UpdatePanel1.Update()
            LastUpdate = DateTime.Now
        End If
    End Sub

    Protected Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
        ScriptManager1.RegisterAsyncPostBackControl(Button1)
        If Not IsPostBack Then
            LastUpdate = DateTime.Now
        End If
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>UpdatePanelUpdateMode Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1"
                               runat="server" />
            <asp:Panel ID="Panel1"
                       GroupingText="UpdatePanel1"
                       runat="server">
                <asp:UpdatePanel ID="UpdatePanel1"
                                   runat="server"
                                   UpdateMode="Conditional">
                    <ContentTemplate>
                        <p>
                            The content in this UpdatePanel only refreshes if five or more
                            seconds have passed since the last refresh and the button in
                            UpdatePanel2 was clicked. The time is checked
                            server-side and the UpdatePanel.Update() method is called. Last
                            updated: <strong>
                                <%= LastUpdate.ToString() %>
                            </strong>
                        </p>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </asp:Panel>
            <asp:Panel ID="Panel2"
                       GroupingText="UpdatePanel2"
                       runat="server">
                <asp:UpdatePanel ID="UpdatePanel2"
                                 runat="server">
                    <ContentTemplate>
                        <p>
                            This UpdatePanel always refreshes if the button is clicked.
                            Last updated: <strong>
                                <%= DateTime.Now.ToString() %>
                            </strong>
                        </p>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </asp:Panel>
            <asp:Button ID="Button1" Text="Button1" runat="server" OnClick="Button1_Click" />
        </div>
    </form>
</body>
</html>

Комментарии

UpdatePanel Если элемент управления не находится внутри другого UpdatePanel UpdateMode элемента управления, панель обновляется в соответствии с параметрами и ChildrenAsTriggers свойствами вместе с коллекцией триггеров. UpdatePanel Когда элемент управления находится внутри другого UpdatePanel элемента управления, дочерняя панель автоматически обновляется при обновлении родительской панели.

Содержимое UpdatePanel элемента управления обновляется в следующих случаях:

  • UpdateMode Если для свойства задано значениеAlways, UpdatePanel содержимое элемента управления обновляется при каждой обратной отправке, полученной из любого места на странице. Сюда входят асинхронные обратные передачи из элементов управления внутри других UpdatePanel элементов управления и обратные передачи из элементов управления, которые не находятся внутри UpdatePanel элементов управления.

  • Если элемент UpdatePanel управления вложен в другой UpdatePanel элемент управления, а родительская панель обновления обновляется.

  • UpdateMode Если свойству присвоено значениеConditional, и возникает одно из следующих условий:

    • Метод элемента управления вызывается Update UpdatePanel явным образом.

    • Обратная связь вызвана элементом управления, определенным как триггер, с помощью Triggers свойства UpdatePanel элемента управления. В этом сценарии элемент управления явно активирует обновление содержимого панели. Элемент управления может находиться внутри или за пределами UpdatePanel элемента управления, который определяет триггер.

    • Свойство ChildrenAsTriggers задается true и дочерний элемент управления элемента UpdatePanel управления вызывает обратную передачу. Дочерний элемент управления вложенного UpdatePanel элемента управления не приводит к обновлению внешнего UpdatePanel элемента управления, если он явно не определен как триггер.

Применяется к

См. также раздел