如何显式更改ADO.Net DataRow的RowState?

时间:2013-03-18 13:24:29

标签: c# ado.net

鉴于ADO.Net DataRow,如何将行的RowState从Added更改为ModifiedDeleted

我尝试直接设置属性:

myDataSet.Tables[0].Rows[0].RowState = DataViewRowState.ModifiedOriginal;

导致编译器出现以下错误消息:

error CS0200: Property or indexer 'DataRow.RowState' cannot be assigned to -- it is read only

1 个答案:

答案 0 :(得分:18)

虽然有明确设置RowState属性的方法,例如SetAddedSetModifiedDelete,但我认为最好自动了解究竟发生了什么。

如果您需要将RowState设置为未更改,请在该行上调用AcceptChanges并从那里开始。如果您需要它处于修改状态,并且当前不是,那么您很可能应该在逻辑中的其他位置AcceptChangesDataRow调用DataTable - 这样当您通过以下代码对行进行修改时:

row["field"] = "New Value";

它会将RowState更改为Modified,但现在它还有一个基线Original行状态,因为您之前已接受了这些更改。

我的观点是,是的,您可以使用其中一些方法明确设置RowState,但我觉得您可能只需要更多地使用ADO.NET接口意图。