Il comportamento standard di un UpdatePanel e' quello di aggiornare i propri contenuti ogni volta che i controlli in esso inseriti scatenano un postback. Questo accade perche' il valore di default di UpdateMode è Always. A volte accade, pero', di dover generare un aggiornamento del contenuto di un UpdatePanel da un controllo che non si trova all'interno dello stesso.
La soluzione al problema e' quella di impostare UpdateMode con il valore Conditional. L'esempio mostra due asp:button che aggiornano rispettivamente due UpdatePanel separati.
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
lbStatus.Text = "Page Post Back";
}
else
{
lbStatus.Text = "First Load";
}
}
protected void UpdateBox1(object sender, EventArgs e)
{
TextBox1.Text = DateTime.Now.ToString();
}
protected void UpdateBox2(object sender, EventArgs e)
{
TextBox2.Text = DateTime.Now.ToString();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<hr />
<asp:Label ID="lbStatus" runat="server" Text="Label"></asp:Label>
<hr />
<asp:Button ID="Button1" runat="server" Text="Update Box 1" OnClick="UpdateBox1" />
<asp:Button ID="Button2" runat="server" Text="Update Box 2" OnClick="UpdateBox2" />
<br /><br />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<br /><br />
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button2" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</form>
</body>
</html>