2012-12-12 45 views
0

我有一個數據表說有11rows DT,我試圖刪除使用錯誤DataTable中的行刪除

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

我有有ID = 3,但刪除後的行數5行有ID = 3的行在數據表中沒有改變,一些紅色的符號出現在刪除行的每個字段(列)中。可以有人知道爲什麼會發生這種情況?

,每當我試圖用

 for(int i=0;i<dt1.Rows.Count;i++) 
     { 
     if (dt1.Rows[i][0].ToString() == "") 
     { 
     } 
     } 

它顯示錯誤「已刪除的行不能採取」

+0

http://stackoverflow.com/questions/2714171/accessing-deleted-rows-from-a-datatable –

回答

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) 
{ 
} 
} 
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