DataRow Row = ds.Tables["cut"].Rows.Find("S001"); //這一步
Row.AcceptChanges();
Row.BeginEdit();
Row.Delete();
Row.EndEdit();我用以上方法刪除Tables["cut"]中記錄,顯示該table的datagrid已看不到被刪除的記錄,說明刪除成功,但我用以下方法取數據時就出錯:string Cut_no="";
foreach (DataRow rowCut in ds.Tables["cut"].Rows)
{
Cut_no=rowCut["cut_no"].ToString().Trim();
出錯提示:“Deleted row information cannot be accessed through the row.”
}
放在最后就可以了。
Row.Delete();
就搞定了。
最后Row.EndEdit();
也就是說記錄不是真正被刪除,而是被打上DataRowState.Deleted標記,我想把它真正刪除
______________________
一个DataRow对象刚被创建之后其状态是Detached,是孤立的一个存在,所以建立了DataRow之后在DataRow中的单元填充了数据后还要通过DataTable.Rows.Add(DataRow)方法将此DataRow添加到DataTable,DataRow添加到DataTable后, 这个DataRow的状态就转变为Added。当修改了这个DataRow后,这个DataRow状态转为Modified,当用DataRow.Delete()方法删除DataRow后,DataRow状态将转为Deleted,不过此行还存在在DataTable中的,只是状态改变了,这时用DataTable.Rows.Count查看行数,跟删除前是一样的。只有在调用了DataTable.Remove(DataRow)方法后,此DataRow才被从DataTable移除,状态也回复到Detached孤立状态。
一旦调用了DataTable.AcceptChanges()方法后,所有的行将根据不同的状态做不同的处理,Added、Modified、Unchanged将保留当前值,Deleted的行将从DataTable中移除,最后所有的行的状态都置为Unchanged。adapter.update(),