主要原因:在内存中对DataTable进行增行删行等操作后,最后要根据这些操作进行其他一些操作,比如对已删除的行,删除其他表中引用该行的记录。
可是,当行被删除后,状态为Deleted,不能读取该行的数据了
在明细删除的时候出现如题问题。明细delete中oDataRow.Delete();
解决方法:
在 GridView_List_DataBound 中。访问行的时候加入判断行的状态。
if (oItemDataList.Rows[i].RowState != DataRowState.Deleted)
{
。。。。。。。。。。。。。。。
}
在 主表中间层updataitem()
for (int i = 0; i < oItemDataList.Rows.Count; i++)
{
if (((Sales.OrdFctItemRow)oItemDataList.Rows[i]).RowState != DataRowState.Deleted)
((Sales.OrdFctItemRow)oItemDataList.Rows[i]).order_no = order_no;
}
备注:
Delete();与Remove();区别:delete 将行标志为删除的状态,Remove彻底删除。