关于asp.net中绑定的模版列CheckBox无法触发OnCheckedChanged事件的问题

以下是代码:

1 <ISWebGrid:WebGridColumn Caption="首页显示" InputRequired="true" Name="Title" Width="70px"

2 ColumnType="Template" DataMember="IsShow" EditType="NoEdit">

3 <CellTemplate>

4 <asp:CheckBox runat="server" 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中调用后台的方法。