ASP.NET UpdatePanel OnTextChanged 中的文本框不会触发



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

<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 中没有存储任何值。当我清除文本框值时,页面生命周期开始,它将文本框的新值与旧值(即视图状态中的值)进行比较。可能它们是相同的(null 或空),因此 OnTextChanged 事件不会触发。

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

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

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

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

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

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

最新更新