【问题标题】:Determine when Postback occurs because of a textbox being changed确定由于更改文本框而发生回发的时间
【发布时间】:2009-03-05 13:13:29
【问题描述】:

我有一个用户控件,它的 自动回发设置为 true。当用户输入文本并移出文本框时,asp.net 会触发一个回发事件。但是,它不是由文本框专门处理的,而是简单的回发 - page_load 触发,然后生活继续。

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

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

有人有什么想法吗?

【问题讨论】:

  • 如果查看页面源码,在输入的onchange事件中应该有__doPostBack调用。参数是什么?
  • 感谢大家的反馈。我没有意识到我还必须处理 onTextCHanged 事件 - 起初我认为它会随着按键的按下而触发......这不太理想。下次我将不得不阅读文档:)

标签: c# asp.net events


【解决方案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接口来引发事件。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      页面加载发送者将始终是 ASP.default_aspx,因为页面是调用该事件的对象。

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

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

      【讨论】:

        【解决方案4】:

        这可能会被忽略,但您实际上是否有为文本框的 TextChanged 事件编码的事件?如果您将其设置为自动回发,但实际上从未为其创建事件,那么您只会获得页面加载和其他相关事件。

        【讨论】:

          【解决方案5】:

          正如在其他答案中提到的,您需要处理“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;
              }
          }
          

          【讨论】:

            猜你喜欢
            • 2015-12-12
            • 1970-01-01
            • 2013-09-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-10-26
            • 1970-01-01
            • 2014-06-28
            相关资源
            最近更新 更多