UpdatePanel.UpdateMode Propriedade

Definição

Recebe ou define um valor que indica quando o conteúdo de um UpdatePanel controlo é atualizado.

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

Valor de Propriedade

Um dos UpdatePanelUpdateMode valores. A predefinição é Always.

Exceções

O tipo especificado não é um dos valores UpdatePanelUpdateMode .

Exemplos

O exemplo seguinte declara dois UpdatePanel controlos. No primeiro painel, a UpdateMode propriedade é definida como Conditional. No segundo painel, UpdateMode está definido para Always. Um botão fora de ambos os painéis é registado como um controlo de postback assíncrono ao chamar o RegisterAsyncPostBackControl método do ScriptManager controlo. No handler de eventos do Click botão, o Update método do primeiro painel é chamado se tiverem decorrido mais de cinco segundos desde a última atualização. Neste cenário, o conteúdo do painel só é atualizado se a última atualização do painel ocorreu há mais de cinco segundos. O conteúdo do segundo painel é sempre atualizado.


<%@ 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>

Observações

Quando um UpdatePanel controlo não está dentro de outro UpdatePanel controlo, o painel é atualizado conforme determinado pelas definições das UpdateMode propriedades e, ChildrenAsTriggers juntamente com o conjunto de gatilhos. Quando um UpdatePanel controlo está dentro de outro UpdatePanel controlo, o painel filho é automaticamente atualizado quando o painel pai é atualizado.

O conteúdo de um UpdatePanel controlo é atualizado nas seguintes circunstâncias:

  • Se a UpdateMode propriedade estiver definida para Always, o UpdatePanel conteúdo do controlo é atualizado em cada postback que tenha origem em qualquer parte da página. Isto inclui postbacks assíncronos de controlos dentro de outros UpdatePanel controlos e postbacks de controlos que não estão dentro UpdatePanel de controlos.

  • Se o UpdatePanel controlo estiver aninhado dentro de outro UpdatePanel controlo e o painel de atualização dos pais for atualizado.

  • Se a UpdateMode propriedade for definida para Conditional, e ocorrer uma das seguintes condições:

    • Chamas explicitamente ao Update método de controlo UpdatePanel .

    • O postback é causado por um controlo definido como um gatilho usando a Triggers propriedade do UpdatePanel controlo. Neste cenário, o controlo desencadeia explicitamente uma atualização do conteúdo do painel. O controlo pode estar dentro ou fora do UpdatePanel controlo que define o gatilho.

    • A ChildrenAsTriggers propriedade é definida para true e um controlo filho do UpdatePanel controlo causa um postback. Um controlo filho de um controlo UpdatePanel aninhado não causa uma atualização ao controlo externo UpdatePanel a menos que seja explicitamente definido como um gatilho.

Aplica-se a

Ver também