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.”
}

解决方案 »

  1.   

    Row.Table.AcceptChanges();
    放在最后就可以了。
      

  2.   

    我把Row.Table.AcceptChanges();放在最後,即如下,出錯提示:“Cannot perform this operation on a row not in the table.”
      

  3.   

    直接一个
    Row.Delete();
    就搞定了。
      

  4.   

    也就是說記錄不是真正被刪除,而是被打上DataRowState.Deleted標記,我想把它真正刪除
      

  5.   

    用sql 直接到table 裡把它給delete 掉...記住commit...
      

  6.   

    先Row.AcceptChanges();
    最后Row.EndEdit();
      

  7.   

    ___________________
    也就是說記錄不是真正被刪除,而是被打上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(),