在DataGrid里绑定CheckBox后,点CheckBox不起作用是怎么回事呀?
.aspx
<asp:TemplateColumn>
<ItemTemplate>
<asp:CheckBox id= "chkSelect " runat= "server "> </asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
.cs
//方式一
private void Button4_Click(object sender, System.EventArgs e)
{
bool noChecked = true;
foreach(DataGridItem dgi in DataGrid1.Items)
{
CheckBox cb=(CheckBox)dgi.FindControl( "chkSelect ");
if(cb.Checked)
{//如果cb被选中的话,执行删除操作
Response.Write( " <script> alert( '成功! ') </script> ");
noChecked = false;
}
}
if (noChecked == true)
{
Response.Write( " <script> alert( '您没有选择要删除的项目! ') </script> ");
}
}
//方式二
private void Button4_Click(object sender, System.EventArgs e)
{
for(int i=0;i <DataGrid1.Items.Count;i++)
{
CheckBox cb=(CheckBox)DataGrid1.Items[i].FindControl( "ckbSelect ");
if (cb!=null)
{
if(cb.Checked)
{
Response.Write( " <script> alert( '成功! ') </script> ");
}
else
{
Response.Write( " <script> alert( '您没有选择要删除的项目! ') </script> ");
}
}
}
在选择了CheckBox后,方式一和方式二都不出现 "成功 "提示,也就是cb为空,或者没选.不知道是怎么回事呀!请指点一下.十分感谢!
------解决方案--------------------找到原因了:
并非没有状态记录,CHECKBOX选中状态在服务器回发后依然选中,由于Viewstate保持了状态。
其实由于数据源的重复绑定导致CHECKBOX状态被初始化!
改进办法就是把数据源的绑定代码放在
if(!IsPostBack)
{
}