循环检测datatable中的行,如果事勾选的就删除,但为什么不是一次删除呢?还有就是又时候能删除多行,有时候只能删除一行。
for(int i = 0;i<dsSend.Tables[0].Rows.Count;i++)
{
if(dsSend.Tables[0].Rows[i]["select"].ToString() == "True")
{
dsSend.Tables[0].Rows.Remove(dsSend.Tables[0].Rows[i]);
}
}
下面是绑定到DATAGRID里面。
另外如果用
foreach(DataRow mydr in dsSend.Tables[0].Rows)
{
if(mydr["select"].ToString() == "True")
{
dsSend.Tables[0].Rows.Remove(mydr);
dsSend.AcceptChanges();
}
}
总是提示:集合已修改,枚举操作可能不会执行。
for(int i = 0;i<dsSend.Tables[0].Rows.Count;i++)
{
if(dsSend.Tables[0].Rows[i]["select"].ToString() == "True")
{
dsSend.Tables[0].Rows.Remove(dsSend.Tables[0].Rows[i]);
}
}
下面是绑定到DATAGRID里面。
另外如果用
foreach(DataRow mydr in dsSend.Tables[0].Rows)
{
if(mydr["select"].ToString() == "True")
{
dsSend.Tables[0].Rows.Remove(mydr);
dsSend.AcceptChanges();
}
}
总是提示:集合已修改,枚举操作可能不会执行。
用for另外,就是倒序循环.
放最后.
{
if(dsSend.Tables[0].Rows[i]["select"].ToString() == "True")
{
dsSend.Tables[0].Rows.Remove(dsSend.Tables[0].Rows[i]);
}
}
这里有问题 当你Remove后dsSend.Tables[0].Rows.Count属性就会被修改,你说的循环还能没问题?建议你先把选定的行集中取去来 最后一起删除
while(i<Tables[0].Rows.Count)
{
if(Tables[0].Rows[i]["select"].ToString() == "True")
{
dsSend.Tables[0].Rows.RemoveAt(i);
dsSend.AcceptChanges();
}
else
{
i++;
}
}