以下是代碼:
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中調用背景方法。