0

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

它显示错误'已删除的行不能接受'

4

2 回答 2

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)
{
}
}
于 2012-12-12T11:42:38.757 回答
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

于 2012-12-12T11:36:46.917 回答