我的DataTable dtStaff中保存的是人员表
我想找到其中某个人删除这条DataRow,代码如下: foreach(DataRow dr in dtStaff.Rows)
{
if(dr[0].ToString()==str)
dr.Delete();
}后来在在再使用时如下:
foreach(DataRow dr in dtStaff.Rows)//就报错说访问的行已删除.
{
......
}请教:如何删除这一行呢
我想找到其中某个人删除这条DataRow,代码如下: foreach(DataRow dr in dtStaff.Rows)
{
if(dr[0].ToString()==str)
dr.Delete();
}后来在在再使用时如下:
foreach(DataRow dr in dtStaff.Rows)//就报错说访问的行已删除.
{
......
}请教:如何删除这一行呢
{
int changedrows = -1;
using (SqlConnection conn = new SqlConnection(userDBConString))
{
try
{
conn.Open();
SqlCommand myCommand = new SqlCommand(condition, conn); SqlDataAdapter adapter = new SqlDataAdapter(myCommand);
changedrows = myCommand.ExecuteNonQuery();
conn.Close();
return changedrows;
}
catch
{
return -1;
}
}
}
把SQL传进去,就可以了!这个SQL就是你根据名字删除人找到的这行数据。
foreach(DataRow dr in dtStaff.Rows)
{
if(dr[0].ToString()==str)
dr.Delete();
} dtStaff.AcceptChanges(); //添加这一句 foreach(DataRow dr in dtStaff.Rows)
{
......
}
使用上面的代码可以达到删除的目的,但是删除后,
foreach(DataRow dr in dtStaff.Rows)
{
if(dr[0].ToString()==str)
dtStaff.Rows.Remove();//这一句执行后,报错说:集合已修改;枚举操作可能无法执行。
}
还是用Delete()方法
循环delete完毕,再调用下 dtStaff.AcceptChanges() 方法。
{
if(dr[0].ToString()==str)
{
dr.Delete();
break;
}
}
string[] removeIndexList = new string[dtDevice.Rows.Count]; for (int i = 0; i < dtDevice.Rows.Count; i++)
{
string strDeviceID = dtDevice.Rows[i]["DeviceID"].ToString();
if (sExecDeviceIDList.IndexOf(strDeviceID) < 0)
{
removeIndexList[i] = strDeviceID;
//dtDevice.Rows.RemoveAt(i);
}
} for (int i = removeIndexList.Length - 1; i >= 0; i--)
{
if (removeIndexList[i] == null || removeIndexList[i].Length == 0) continue;
dtDevice.Rows.RemoveAt(i);
}