【问题标题】:ASP.Net 4.0 OnTextChanged event is not firing in ItemTemplate (ListView)ASP.Net 4.0 OnTextChanged 事件未在 ItemTemplate (ListView) 中触发
【发布时间】:2012-09-13 16:54:53
【问题描述】:

为什么我无法访问 OnTextChanged 事件?我已经在文本框中添加了 AutoPostBack="true"。已尝试调试但仍未触发。

以下是示例代码:

.ASPX 代码

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
         <asp:ListView ID="ListView1" runat="server">
             <ItemTemplate>
                 <asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged" AutoPostBack="true"></asp:TextBox>
             </ItemTemplate>
         </asp:ListView>
    </ContentTemplate>
</asp:UpdatePanel>

.VB 代码

Protected Sub TextBox1_TextChanged(sender As Object, e As EventArgs)
    Dim TextBox1 As TextBox = DirectCast(sender, TextBox)
    Label1.Text = TextBox1.Text
End Sub

我在这里缺少什么?


已解决

我在页面加载中绑定数据源。更改为 OnPreRender 后,它的工作原理!

【问题讨论】:

  • 该代码应该可以工作。您是否尝试在 TextBox1_TextChanged 中设置一个断点并进行调试以查看它是否停在那里?
  • 是的,设置了一个断点,但调试器没有打到那里
  • 您的调试器是否在其他断点处停止?页面加载后是否有 javascript 错误?
  • @RayCheng 在页面加载时设置断点,自动回发文本框后,调试器仍然没有点击 TextBox1_TextChanged。未检测到 javascript 错误
  • 这很奇怪,但是你的代码和概念很好,所以我建议你创建一个新的简单项目,然后一点一点地添加你的其他代码,看看哪一个会破坏它。

标签: asp.net vb.net listview .net-4.0 updatepanel


【解决方案1】:

页面上有 ScriptManager 吗?这将是我的一个想法。

【讨论】:

  • 是的。 ScriptManager 已包含在页面中。我对 ajax listview 分页没有任何问题
【解决方案2】:

您确定是文本框出了问题吗? Label1 也必须在更新面板中才能显示新值;当异步回发触发时,只有更新面板区域会更新。确保 Label1 位于设置了 UpdateMode="Always" 的 UpdatePanel 中。

检查在文本框的事件处理程序的标记中定义了 __doPostback 的 JavaScript(应该是 onblur,但可能是 onchange)。

【讨论】:

  • 它可能不会更新标签,但调试器应该停止。操作系统应该不是问题。
猜你喜欢
  • 2015-07-24
  • 1970-01-01
  • 2015-08-08
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多