由于文本框被更改,确定何时发生回发

时间:2009-03-05 13:13:29

标签: c# asp.net events

我有一个带有< asp:TextBox>的用户控件将autopostback设置为true。当用户键入文本并离开文本框时,asp.net会触发回发事件。但是,它不是由文本框专门处理的,而只是一个回发 - page_load触发,然后生命继续。

我需要的是一种了解此文本框触发事件的方法。然后,我想要启动我自己的自定义事件,以便我的主页可以订阅它并在文本框更改时处理事件。

起初我以为我可以捕获发件人 - 我假设发件人是文本框,但它似乎是页面本身。

有人有任何想法吗?

5 个答案:

答案 0 :(得分:1)

我认为你错过了什么,所以我想逐步解释:

你的文本框应该是这样的:

<asp:TextBox runat="server" ID="TextBox1" AutoPostBack="true" 
OnTextChanged="TextBox1_TextChanged"></asp:TextBox>

在你的代码隐藏中,你应该有这样的事件:

protected void TextBox1_TextChanged(object sender, EventArgs e)
{
    string str = TextBox1.Text;
}

注意:如果您想在代码隐藏中附加活动,可以通过以下方式执行此操作:

TextBox1.TextChanged +=new EventHandler(TextBox1_TextChanged);

但是如果你谈论自定义控件,你应该实现 IPostBackDataHandler 接口来引发事件。

答案 1 :(得分:0)

这是我动态创建的usercontrol还是textbox?如果是这样,你必须在page_load事件中重新创建该控件,并且应该正常地在文本框上触发事件。

答案 2 :(得分:0)

页面加载发件人将始终为ASP.default_aspx,因为该页面正在调用该事件。

您可以连接到偶数OnTextChanged,其中发件人将是已更改或导致回发的文本框。

请记住,页面加载将始终在控件上的任何事件之前触发。

答案 3 :(得分:0)

这可能会被忽略,但实际上你是否为文本框的TextChanged事件编写了一个事件?如果你将它设置为autopostback但从未真正为它创建过事件,那么你只会获得页面加载和其他相关事件。

答案 4 :(得分:0)

在其他答案中提到你需要处理'OnTextChanged'事件。

<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>

private void TextBox1_TextChanged(object sender, System.EventArgs e)
{
    TextBox txt = (TextBox)sender;
    string id = txt.ID;

    switch(id)
    {
        case "TextBox1":
            break;
    }
}