UpdatePanel.UpdateMode Egenskap

Definition

Hämtar eller anger ett värde som anger när en UpdatePanel kontrolls innehåll uppdateras.

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

Egenskapsvärde

Ett av UpdatePanelUpdateMode värdena. Standardvärdet är Always.

Undantag

Den angivna typen är inte ett av UpdatePanelUpdateMode värdena.

Exempel

I följande exempel deklareras två UpdatePanel kontroller. I den första panelen är egenskapen UpdateMode inställd på Conditional. I den andra panelen UpdateMode är inställt på Always. En knapp utanför båda panelerna registreras som en asynkron postback-kontroll genom att anropa RegisterAsyncPostBackControl kontrollens ScriptManager metod. I knappens händelsehanterare Click anropas Update metoden för den första panelen om mer än fem sekunder har förflutit sedan den senaste uppdateringen. I det här scenariot uppdateras panelens innehåll endast om den senaste paneluppdateringen var för mer än fem sekunder sedan. Innehållet i den andra panelen uppdateras alltid.


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

Kommentarer

När en UpdatePanel kontroll inte finns i en annan UpdatePanel kontroll uppdateras panelen enligt inställningarna UpdateMode för egenskaperna och ChildrenAsTriggers tillsammans med samlingen av utlösare. När en kontroll finns i en UpdatePanel annan UpdatePanel kontroll uppdateras den underordnade panelen automatiskt när den överordnade panelen uppdateras.

Innehållet i en UpdatePanel kontroll uppdateras under följande omständigheter:

  • Om egenskapen UpdateMode är inställd AlwaysUpdatePanel på uppdateras kontrollens innehåll på varje postback som kommer från var som helst på sidan. Detta omfattar asynkrona postbacks från kontroller i andra UpdatePanel kontroller och återtaganden från kontroller som inte finns i UpdatePanel kontroller.

  • Om kontrollen UpdatePanel är kapslad i en annan UpdatePanel kontroll och den överordnade uppdateringspanelen uppdateras.

  • Om egenskapen är inställd på UpdateModeConditional, och något av följande villkor inträffar:

    • Du anropar Update metoden för UpdatePanel kontrollen explicit.

    • Återanropet orsakas av en kontroll som definieras som en utlösare med hjälp Triggers av kontrollens UpdatePanel egenskap. I det här scenariot utlöser kontrollen uttryckligen en uppdatering av panelinnehållet. Kontrollen kan vara antingen inuti eller utanför den UpdatePanel kontroll som definierar utlösaren.

    • Egenskapen ChildrenAsTriggers är inställd på true och en underordnad UpdatePanel kontroll av kontrollen orsakar ett återanrop. En underordnad kontroll av en kapslad UpdatePanel kontroll orsakar inte en uppdatering av den yttre UpdatePanel kontrollen om den inte uttryckligen definieras som en utlösare.

Gäller för

Se även