【问题标题】:TextChanged doesn't fire when removing text删除文本时不会触发 TextChanged
【发布时间】:2014-06-05 15:42:36
【问题描述】:

我已经建立了一个编辑页面。有一个 cmets 部分,并且可能需要删除 cmets。

我已承诺使用TextChanged,因为用户担心点击按钮(翻白眼)。我正在像这样动态地创建事件:

txtComments.TextChanged += UpdateComments;

如果文本框中有任何内容,则该事件可以正常工作,但如果删除了所有文本,则该事件不会触发。

任何帮助将不胜感激。

【问题讨论】:

  • 你在使用 ASP.NET Ajax 吗?
  • 如果该字段为空,您是否有任何验证可能导致它不回发?
  • 您是否以编程方式清除文本?
  • 我没有使用 Ajax,也没有验证空字段。文本更新是最终用户采取的行动。谢谢!
  • 另外,如果我输入一个空间,事件就会触发。只有当我删除所有文本时它才会失败。

标签: c# asp.net textbox textchanged


【解决方案1】:

来自System.Web.UI.WebControls.TextBox控件的MSDN:

当文本框的内容在发送到服务器的帖子之间发生变化时,会引发 TextChanged 事件。仅当用户更改文本时才会引发该事件;如果以编程方式更改文本,则不会引发事件。

使用代码清除帖子之间的TextBox 将导致您描述的行为(没有事件触发)。

【讨论】:

  • 我在发帖前读过。我没有以编程方式更改文本。我认为没有文本与任何文本仍然会被视为文本的变化
【解决方案2】:

如果文本框的值自上次发布到服务器后发生更改,则该方法将始终运行。它将当前值与上次发送到服务器的值进行比较,并决定是否应该调用该方法。

【讨论】:

  • 我同意您的评论,但事实并非如此。我可以删除整个句子,但没有任何反应,但如果我将其全部删除,但添加一个空格,事件就会触发。
  • 您可以发布一些代码吗?我会检查一下,看看我是否发现任何可疑之处。
【解决方案3】:

由于您的元素是动态创建的,因此请确保在每次回发时设置事件处理程序。我相信你必须在 Pre_Init vs Page_Load 上设置它,但我有一段时间没有处理 ASP.NET 页面生命周期了。这是一个链接:http://msdn.microsoft.com/en-us/library/ms178472%28v=vs.85%29.aspx

【讨论】:

  • 我显然没有做好澄清工作。 txtComments 正在动态创建。它使用数据库中的当前 cmets 进行更新。然后用户可以修改 cmets,并在文本框退出时调用 UpdateComments() 事件。感谢您的帮助!
  • 编辑了响应,因为很明显文本框是动态创建的。
  • 我已通读该文件。这是有用的信息,但如果注释被完全删除,则在任何更改except 实例中都会触发该事件。如果我只插入一个空格,事件就会触发并发生更新。如果我以任何方式修改字符串并且有多个字符,则事件会触发。只有当所有字符都被删除时,事件才不再触发。我尽量说清楚。对于迄今为止的任何混淆,我深表歉意。
【解决方案4】:

这很莫名其妙,我似乎无法重现您的问题。这是我用来使其工作的代码,也许您可​​以将代码与我所做的进行比较,看看是否有任何区别。

protected void Page_Load(object sender, EventArgs e)
        {
            var txt = new TextBox
                          {
                              Text = "Initial Text"
                          };

            txt.TextChanged += ThisTextBoxChanged;
            form1.Controls.Add(txt);
        }

        private static void ThisTextBoxChanged(object sender, EventArgs e)
        {
            System.Diagnostics.Debugger.Break();
        }

【讨论】:

  • 感谢您的代码。我不得不离开一段时间,然后回到事情上。我会尝试一下,看看效果如何。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-26
  • 2012-01-03
  • 1970-01-01
相关资源
最近更新 更多