0

私は11行を持つDTと言うデータテーブルを持っていて、id = 3を持つ行を削除しようとしました

string DeptID ="3";
string s = "id='" + DeptID + "'";
rows = DT.Select(s);
foreach (DataRow r in rows)
r.Delete();

id = 3の5行がありますが、削除後、データテーブルの行数は変更されず、削除された行の各フィールド(列)に赤い色のシンボルが表示されます。なぜこれが起こっているのか誰にもわかりますか?

を使用して残りの行にアクセスしようとするたびに

     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 に答える