.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为空,或者没选.不知道是怎么回事呀!请指点一下.十分感谢!

解决方案 »

  1.   

    如果会出现“您没有选择要删除的项目”照这样来说肯定是cb.Checked这句总是False了?你设个Break point在这里去查看了一下它的值不就知道了吗?
      

  2.   

    我猜测的原因是在你触发了Button4_Click的时候,你的datagrid还没有邦定数据。
    如果我猜对的话,你的方法一会显示 "您没有选择要删除的项目!"的对话框
    而你的方法而则什么有没有显示。
      

  3.   

    我的datagrid已经邦定数据了.但选择完checkBox后
    方法一会显示 "您没有选择要删除的项目!"的对话框
    方法二而则什么有没有显示。
    不知道.为什么会出现这种情况.
      

  4.   

    你看下 ckeckbox 属性里的 AutoPostback 属性 设置为true
      

  5.   

    你看下 ckeckbox 属性里的 AutoPostback 属性 设置为true这个不行,每一下CheckBox页面都刷新.我只想在dategrid里绑定CheckBox,然后通过选择CheckBox操作DateGrid里的数据.
    在网上找了好多资料,都没看到和我相同的问题..如果谁有好用的C#代码给个也行.
    十分感谢呀!!
      

  6.   

    在你点击按钮后 页面又刷新了 而你绑定数据在事件又发生了一次致使CHEKCBOX又回来原来的状
    态,没有选中……可以设计一下看看,断点设在PAGELOAD里,应该是这个原因。
      

  7.   

    上面错字太多也就是说你的CHECKBOX状态没有记住,每次页面加载时又回来原来的状态
      

  8.   

    找到原因了:
    并非没有状态记录,CHECKBOX选中状态在服务器回发后依然选中,由于Viewstate保持了状态。
    其实由于数据源的重复绑定导致CHECKBOX状态被初始化!
    改进办法就是把数据源的绑定代码放在
    if(!IsPostBack)
    {
    }
      

  9.   

    感谢:GXY2005(晓晨美眉好^_^) 问题解决了:)