2009-03-05 53 views
0

我有一个用户控件,它有一个< asp:TextBox >并将autopostback设置为true。当用户键入文本并移出文本框时,asp.net将触发​​回发事件。然而,它并不是由文本框专门处理,而是简单地回发 - page_load激发,然后生活继续。确定何时发生回发,因为文本框被更改

我需要的是一种方法来知道这个文本框解雇了这个事件。然后我想激发我自己的自定义事件,以便我的主页可以订阅它并在文本框更改时处理事件。

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

任何人有任何想法?

+0

如果您查看页面的来源,则应在输入的onchange事件中调用__doPostBack。什么是参数? – Guffa 2009-03-05 13:26:42

回答

1

我认为你缺少的东西,所以我想解释它一步一步:

您的文本框应该是类似的东西:

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

,并在你的代码隐藏你shhould有一个事件这样的:

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

注:,如果你想在附上事件的代码隐藏,你可以这样做:

TextBox1.TextChanged +=new EventHandler(TextBox1_TextChanged); 

,但如果你谈论的自定义控件,您应该实现IPostBackDataHandler界面引发事件。

0

这是我动态创建的用户控件还是文本框?如果是这样,您必须在page_load事件中重新创建该控件,并且正常情况下应该在文本框中触发该事件。

0

页面加载发件人将始终为ASP.default_aspx,因为该页面是调用该事件的内容。

您可以连接到OnTextChanged甚至OnTextChanged发件人将是已更改或导致回发的文本框。

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

0

这可能是一些可能被忽略的东西,但是您是否确实有事件编码为TextBox的TextChanged事件?如果您将其设置为autopostback,但从未真正为其创建事件,那么您只会获取网页加载和其他相关事件。

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; 
    } 
} 
相关问题