"集合已更改,枚举类型不可能不可用

public void btnDelete(object sender,System.EventArgs e)
  {  
   //string dID;
   //string strsql;
   foreach (DataGridItem dgi in DataGrid1.Items)
   {//轮询,选中的则删除
    CheckBox cb = (CheckBox)dgi.FindControl("cbItem");
    if(cb.Checked)
    {
     string dID = dgi.Cells[0].Text;
     string strsql = "DELETE FROM person WHERE uid ='"+dID+"'";
     ExecuteSql(strsql);
    }
   }
   DataGrid1.CurrentPageIndex = 0;
   BindData();
  }
 
这段程序会出现"集合已更改,枚举类型不可能不可用"

这是因为一边轮询一边删除,造成集合的更改,也就是类似于for(int i = 0; i<count; i++)而count是一个变量,所以会出错

解决方法,找一个数组,把要删除的记录下来,然后在删除!

下面是修改后的代码

 public void btnDelete(object sender,System.EventArgs e)
  {  
   string[] dID;
   dID = new string[DataGrid1.Items.Count];//预分配为全部删除
   int count=0;//记录被选中的数目
   int i = 0;
   string strsql;
   foreach(DataGridItem dgi in DataGrid1.Items)
   {//轮询,把要删除的记录在一个表中
    CheckBox cb = (CheckBox)dgi.FindControl("cbItem");
    if(cb.Checked)
    {
     dID[i] = dgi.Cells[0].Text;
     count++;
     i++;
     
     
    }
   }

   for(i = 0;i < count;i++)
   {//轮询,删除所选项
    strsql = "DELETE FROM person WHERE uid = '"+dID[i]+"'";
    ExecuteSql(strsql);
   }
   DataGrid1.CurrentPageIndex = 0;
   BindData();
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值