Поделиться через


UpdatePanelUpdateMode Перечисление

Определение

Представляет возможные режимы обновления содержимого в элементе управления UpdatePanel.

public enum class UpdatePanelUpdateMode
public enum UpdatePanelUpdateMode
type UpdatePanelUpdateMode = 
Public Enum UpdatePanelUpdateMode
Наследование
UpdatePanelUpdateMode

Поля

Имя Значение Описание
Always 0

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

Conditional 1

Указывает ряд условий, при которых содержимое UpdatePanel элемента управления обновляется; дополнительные сведения см. в разделе "Примечания".

Примеры

В следующем примере объявляется два UpdatePanel элемента управления. Первая панель задает UpdatePanel.UpdateMode для свойства Conditionalзначение . Вторая панель имеет UpdatePanel.UpdateMode значение Always по умолчанию. Кнопка за пределами обеих панелей регистрируется как асинхронный элемент управления обратной ScriptManager.RegisterAsyncPostBackControl передачи с помощью метода. В обработчике событий нажатия кнопки метод первой панели вызывается, UpdatePanel.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>

Комментарии

Перечисление UpdatePanelUpdateMode используется свойством UpdatePanel.UpdateMode и определяет возможные режимы обновления для содержимого UpdatePanel элемента управления. Элемент UpdatePanel управления требует, чтобы ScriptManager.EnablePartialRendering свойство было true для отрисовки частичной страницы.

Значение свойства UpdatePanel.UpdateMode по умолчанию: Always.

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

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

  • Метод UpdatePanel.Update вызывается явным образом.

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

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

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

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