以下是代码:

1 <ISWebGrid:WebGridColumn Caption="首页显示" InputRequired="true" Name="Title" Width="70px"
2 ColumnType="Template" DataMember="IsShow" EditType="NoEdit">
3 <CellTemplate>
4 <asp:CheckBox runat="server" ID="cbIsShow" Checked='<%# Bind("IsShow") %>' EnableViewState="true"
5 OnCheckedChanged="cbIsShow_CheckedChanged" Enabled="false" />
6 </CellTemplate>
7 </ISWebGrid:WebGridColumn>
1 protected void cbIsShow_CheckedChanged(object sender,EventArgs e)
2 {
3 Response.Write("<script>alert(\"cbIsShow_CheckedChanged\");</script>");
4 }

当点击模版列的CheckBox时,后台的cbIsShow_CheckedChanged方法总是不执行。

google中有许多种答案如:

1.AutoPostBack="True"没写;

2.EnableViewState要设为false;

试过后都不行。

当我把绑定去掉以后,cbIsShow_CheckedChanged方法正常运行。

我给的解释是:

OnCheckedChanged是在CheckBox的Checked属性变化之后才会满足事件触发条件的,模版列中的CheckBox的Checked属性绑定了IsShow字段,在没有改变数据源的情况下,CheckBox的Checked属性值是不会改变的,不满足事件触发条件,所以不运行事件处理函数也是正常的。

也许可行的方法为:

1.为CheckBox添加客户端事件onClicked,在js中调用后台的方法。

相关文章:

  • 2022-12-23
  • 2021-08-22
  • 2021-07-12
  • 2022-12-23
  • 2022-12-23
  • 2021-07-16
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-12-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-18
相关资源
相似解决方案