UpdatePanel.UpdateMode Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
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.