当我进行回发时,TextChanged事件再次触发

时间:2011-02-22 16:18:23

标签: c# asp.net visual-studio updatepanel

<asp:UpdatePanel ID="uppBaixa" runat="server">
    <ContentTemplate>
            <asp:TextBox ID="txt1" runat="server" AutoPostBack="true" OnTextChanged="txt1_TextChanged"></asp:TextBox>
            <asp:TextBox ID="txt2" runat="server"></asp:TextBox>
            <asp:Button ID="btnSave" runat="server" OnClick="btnSave_Click" />
    </ContentTemplate>
</asp:UpdatePanel>

这基本上就是ASPX的样子。当我离开(标签)txt1时,TextChanged事件被调用,它通常会填充txt2。但是当我更改txt2中的文字并点击btnSave来更新此数据时,txt1_TextChanged被称为AGAIN(在实际的btnSave_Click方法触发之前)

1 个答案:

答案 0 :(得分:0)

如果你

  • 获取示例UpdatePanel并将其放入新项目(并添加ScriptManager)
  • 添加以下方法

    protected void btnSave_Click(object sender, EventArgs e)
    {
        this.txt1.Text = "foo";
    
    }
    protected void txt1_TextChanged(object sender, EventArgs e)
    {
        txt2.Text = txt1.Text;
    }
    
  • 将txt1更新为ABC,然后txt2将成为ABC

  • 将txt2更新为Bar,然后将txt1.Text更新为ABC,将txt2更改为Bar
  • 按保存只会将txt1更改为Foo,而txt将保持为Bar

这意味着您所描述的内容无法重现。

请注意,即使您在服务器端设置txt1.text = "foo",它也不会引发textChanged事件,这意味着它可能是客户端上的内容

尝试将此添加到您的Page_Load事件中以找到它。

  this.btnSave.Attributes.Add("OnClick", "debugger");