如何防止从页面的PostBack更新UpdatePanel的内容?

时间:2011-01-30 14:05:27

标签: c# asp.net updatepanel

如何防止整个页面中发生的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();

时更新

任何帮助!

2 个答案:

答案 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();