UpdatePanel OnTextChanged 中的 ASP.NET TextBox 不会触发

Posted

技术标签:

【中文标题】UpdatePanel OnTextChanged 中的 ASP.NET TextBox 不会触发【英文标题】:ASP.NET TextBox inside UpdatePanel OnTextChanged doesn't fire 【发布时间】:2014-02-24 09:00:03 【问题描述】:

我有一个更新面板,里面有文本框。

<asp:UpdatePanel runat="server" UpdateMode="Conditional">
     <ContentTemplate>
           <asp:TextBox runat="server" ID="txtChangeAmount" AutoPostBack="true" OnTextChanged="TxtChangeAmount_TextChanged" EnableViewState="true"></asp:TextBox>
     </ContentTemplate>
</asp:UpdatePanel>

好吧,当我在文本框中输入一些文本时,它会按预期成功触发其 OnTextChanged 事件,但是当我从文本框中清除输入的文本时,它会正确回发,但不会触发 OnTextChanged 事件。 我认为问题与 ViewState 有关。 当页面第一次加载时,文本框也被加载,其中没有值,因此文本框的 ViewState 中没有存储值。当我清除文本框值时,页面生命周期开始,它将文本框的新值与旧值进行比较,即视图状态中的值。可能它们是相同的(null 或空),因此 OnTextChanged 事件不会触发。

在这种情况下如何使事件触发?

请注意,我没有回发问题,但只有文本框为空时的事件。

【问题讨论】:

或许***.com/questions/826023/… 试试这个***.com/questions/4319156/… 伙计们,我的问题不是回发,因为无论如何它都没有问题。我的问题是在清空文本框时也会触发 TextChanged 事件,就像其他情况一样 【参考方案1】:

如果 UpdateMode 属性设置为 Conditional,则 UpdatePanel 控件的内容会在以下情况下更新:

当您显式调用 UpdatePanel 控件的 Update 方法时。 当 UpdatePanel 控件嵌套在另一个 UpdatePanel 控件中并且父面板被更新时。

当使用 UpdatePanel 控件的 Triggers 属性定义为触发器的控件导致回发时。在这种情况下,控件显式触发面板内容的更新。该控件可以位于与触发器关联的 UpdatePanel 控件内部或外部。

当 ChildrenAsTriggers 属性设置为 true 并且 UpdatePanel 控件的子控件导致回发时。嵌套 UpdatePanel 控件的子控件不会导致对外部 UpdatePanel 控件的更新,除非它们被明确定义为触发器。

【讨论】:

我的问题不是回发,因为它在任何情况下都没有问题。我的问题是在清空文本框时也会触发 TextChanged 事件,就像其他情况一样

以上是关于UpdatePanel OnTextChanged 中的 ASP.NET TextBox 不会触发的主要内容,如果未能解决你的问题,请参考以下文章

Android 在 onTextChanged 中调用 setText

Android:OnTextChanged 电子邮件验证未按预期工作

如何创建一个创建 onTextChanged Listener 并允许程序员设置不同行为的类

安卓onTextChanged参数解释及实现EditText字数监听 Editable使用

ASP.NET UpdatePanel:在 UpdatePanel 更新上注入 Javascript

FileUpload与UpdatePanel