DataTable行删除错误

时间:2012-12-12 11:30:04

标签: c# asp.net visual-studio-2008

我有一个数据表说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() == "")
        {
        }
      }

它显示错误'已删除的行无法使用'

2 个答案:

答案 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