我有一个数据表说DT有11个,我试图用
删除id = 3的行string DeptID ="3";
string s = "id='" + DeptID + "'";
rows = DT.Select(s);
foreach (DataRow r in rows)
r.Delete();
我有5行id = 3但删除后数据表中的行数没有改变,并且删除行的每个字段(列)中都有一些红色符号。任何人都知道为什么会这样吗?
每当我尝试使用
访问剩余的行时 for(int i=0;i<dt1.Rows.Count;i++)
{
if (dt1.Rows[i][0].ToString() == "")
{
}
}
它显示错误'已删除的行无法使用'
答案 0 :(得分:5)
删除行后,请将Acceptchanges()提供给数据表,这样它就会与新数据同步。
dt.AcceptChanges();
//And u can also add a condition,while fetching the data,
foreach (DataRow dr in rows)
{ if(dr.RowState!=DataRowState.Deleted ||dr.RowState!=DataRowState.Detached)
{
}
}
答案 1 :(得分:2)
您将行标记为删除,这就是出现红色符号的原因。 row.Delete()
仅将您的行状态更改为已删除。当您接受然后更改(通过AcceptChanges
方法)时,将发生实际删除。
有关更多信息,请参阅以下msdn链接: http://msdn.microsoft.com/en-us/library/03c7a3zb.aspx http://msdn.microsoft.com/en-us/library/system.data.datarow.delete.aspx http://msdn.microsoft.com/en-us/library/system.data.datarow.acceptchanges.aspx