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

时间:2014-02-24 09:00:03

标签: c# asp.net textbox updatepanel textchanged

我有一个包含文本框的更新面板。

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

在这种情况下如何让事件发生?

请注意这样一个事实,即我没有回发问题,但仅限于文本框为空时的事件。

1 个答案:

答案 0 :(得分:0)

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

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

当通过使用UpdatePanel控件的Triggers属性将控件定义为触发器引起回发时。在此方案中,控件显式触发面板内容的更新。控件可以位于与触发器关联的UpdatePanel控件的内部或外部。

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