我有一个带有< asp:TextBox>的用户控件将autopostback设置为true。当用户键入文本并离开文本框时,asp.net会触发回发事件。但是,它不是由文本框专门处理的,而只是一个回发 - page_load触发,然后生命继续。
我需要的是一种了解此文本框触发事件的方法。然后,我想要启动我自己的自定义事件,以便我的主页可以订阅它并在文本框更改时处理事件。
起初我以为我可以捕获发件人 - 我假设发件人是文本框,但它似乎是页面本身。
有人有任何想法吗?
答案 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;
}
}