UpdatePanel.UpdateMode Proprietà

Definizione

Ottiene o imposta un valore che indica quando viene aggiornato il contenuto di un controllo 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

Valore della proprietà

UpdatePanelUpdateMode

Uno dei valori di UpdatePanelUpdateMode. Il valore predefinito è Always.

Eccezioni

Il tipo specificato non è uno dei valori di UpdatePanelUpdateMode.

Esempio

Nell'esempio seguente vengono dichiarati due UpdatePanel controlli. Nel primo pannello la UpdateMode proprietà è impostata su Conditional. Nel secondo pannello UpdateMode è impostato su Always. Un pulsante all'esterno di entrambi i pannelli viene registrato come controllo di postback asincrono chiamando il RegisterAsyncPostBackControl metodo del ScriptManager controllo . Nel gestore eventi del Click pulsante, il Update metodo del primo pannello viene chiamato se sono trascorsi più di cinque secondi dall'ultimo aggiornamento. In questo scenario, il contenuto del pannello viene aggiornato solo se l'ultimo aggiornamento del pannello è stato superiore a cinque secondi fa. Il contenuto del secondo pannello viene sempre aggiornato.


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

Commenti

Quando un UpdatePanel controllo non è all'interno di un altro UpdatePanel controllo, il pannello viene aggiornato in base alle impostazioni delle UpdateMode proprietà e ChildrenAsTriggers , insieme alla raccolta di trigger. Quando un UpdatePanel controllo si trova all'interno di un altro UpdatePanel controllo, il pannello figlio viene aggiornato automaticamente quando viene aggiornato il pannello padre.

Il contenuto di un UpdatePanel controllo viene aggiornato nelle circostanze seguenti:

  • Se la UpdateMode proprietà è impostata su Always, il UpdatePanel contenuto del controllo viene aggiornato in ogni postback che ha origine da qualsiasi punto della pagina. Sono inclusi postback asincroni da controlli all'interno di altri UpdatePanel controlli e postback da controlli non all'interno UpdatePanel di controlli.

  • Se il UpdatePanel controllo è annidato all'interno di un altro UpdatePanel controllo e il pannello di aggiornamento padre viene aggiornato.

  • Se la UpdateMode proprietà è impostata su Conditionale si verifica una delle condizioni seguenti:

    • Chiamare il Update metodo del UpdatePanel controllo in modo esplicito.

    • Il postback è causato da un controllo definito come trigger tramite la Triggers proprietà del UpdatePanel controllo . In questo scenario, il controllo attiva in modo esplicito un aggiornamento del contenuto del pannello. Il controllo può trovarsi all'interno o all'esterno del UpdatePanel controllo che definisce il trigger.

    • La ChildrenAsTriggers proprietà è impostata su true e un controllo figlio del UpdatePanel controllo causa un postback. Un controllo figlio di un controllo annidato non causa un aggiornamento al controllo esternoUpdatePanel, a meno che non sia definito in modo esplicito UpdatePanel come trigger.

Si applica a

Vedi anche