如何防止整个页面中发生的PostBack的UpdatePanel内容?
我有以下代码:
<head runat="server">
<title></title>
<script type="text/C#" runat="server">
// I don't want it to call this event handler
// untill I update the UpdatePanel manually by UpdatePanel1.Update();
protected void TextBox2_Load(object sender, EventArgs e)
{
((TextBox)sender).Text = DateTime.Now.ToString();
}
protected void Unnamed1_Click(object sender, EventArgs e)
{
TextBox1.Text = DateTime.Now.ToString();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox2" runat="server" OnLoad="TextBox2_Load">
</asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Unnamed1_Click" />
<asp:TextBox ID="TextBox1" runat="server" />
</div>
</form>
</body>
</html>
以前的代码将写入TextBox2,尽管它存在于UpdatePanel
Conditional
UpdateMode
内{{1}}。
我希望它只在我调用UpdatePanel1.Update();
时更新任何帮助!
答案 0 :(得分:1)
如果将Button1和TextBox1放在与TextBox2相同的UpdatePanel中,这应该可以为您提供所需的功能。
如果要将它们保存在单独的UpdatePanel中,您可以,但是您需要在UpdatePanel1上为Unnamed1_Click事件指定触发器(或在代码中调用UpdatePanel1.Update())。
答案 1 :(得分:-1)
尝试使用IsInAsyncPostBack:
protected void TextBox2_Load(object sender, EventArgs e)
{
if (ScriptManager1.IsInAsyncPostBack == true)
((TextBox)sender).Text = DateTime.Now.ToString();