【问题标题】:oncheckedchanged not firing for CheckBox when in GridView在 GridView 中时,oncheckedchanged 未触发 CheckBox
【发布时间】:2013-02-21 20:36:29
【问题描述】:

我正在尝试为 GridView 中的 asp:CheckBox 触发 OnCheckedChanged 事件。但是当我将它放入 GridView 时,它不会在代码隐藏中触发 OnCheckedChanged。

如果我将相同的复选框放在网格视图之外,那就太好了。

我尝试将函数设置为RowCommand,但也不起作用。

这是我的复选框:

<asp:CheckBox ID="HoldBillingCheckBox" runat="server" key='<%# Eval("CustomerItemID") %>' Checked='<%# Eval("HoldBilling") %>' OnCheckedChanged="CustomerItemsGridView_CheckChanged" Enabled="true" EnableViewState="true" AutoPostBack="true"/>

在我看来,这只发生在您尝试用任何视图包装 CheckBox 时。

有人有什么建议吗?我搜索了很多不同的解决方案,但似乎没有任何效果(他们主要是告诉我将AutoPostBack 添加为true...或将enableviewstate 添加为true)。

提前致谢!

【问题讨论】:

  • 据我所知应该有一个行加载事件,基本上是它被多次实例化的复选框,因此需要在每行加载时连接处理程序。我认为您还需要查看状态
  • 顺便说一句 - ASP-Classic 是 VBScript,而不是 C#
  • 我怀疑您存在控件所有权问题 - 由于该控件不属于该页面,因此它也不为它处理事件。

标签: c# asp.net gridview oncheckedchanged


【解决方案1】:

如果您在每次加载页面时重新绑定您的 gridview,那么您正在破坏 CheckChanged 事件的状态性。当您重新绑定您的网格时,它会使页面的先前“版本”中的任何控件无效。

您需要添加if (!IsPostBack) 作为条件,以防止您的 GridView 重新绑定。

【讨论】:

  • 您的意思是在 Page_Load 中?但该事件甚至不会触发。它甚至没有在 OnCheckedChanged 函数中达到我的断点。
  • 您应该在绑定 GridView 的位置发布代码。如果您在每个帖子上重新绑定它,那么您基本上是在撤消 GridView 中任何控件上的任何事件绑定。
  • 技术上..如果我删除自动回发并且没有绑定..它应该仍然触发我的功能吗?我删除了回发和重新绑定,但它仍然没有触发我的功能
  • 不,您需要回发控件才能执行事件。重新绑定将是杀死它的原因。
  • 是的,我需要回发来触发服务器事件..hmm 但我的数据绑定仅通过页面加载完成......我对 gridview 的所有内容都是 aspx 和数据源(你们可以可能告诉我对此有点陌生..抱歉这些问题)
猜你喜欢
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 2010-11-20
  • 2011-09-29
  • 1970-01-01
  • 2019-04-13
  • 2016-04-13
  • 1970-01-01
相关资源
最近更新 更多