修改 DataView (ADO.NET)

更新:November 2007

可以使用 DataView 在基础表中添加、删除或修改数据行。 通过设置 DataView 的三个布尔值属性之一,可以控制使用 DataView 修改基础表数据的能力。 这三个属性是 AllowNewAllowEditAllowDelete。 默认情况下,它们设置为 true

如果 AllowNewtrue,则可以使用 DataViewAddNew 方法来创建新的 DataRowView。 请注意,在调用 DataRowViewEndEdit 方法之前,新行实际上不会添加到基础 DataTable 中。 如果调用 DataRowViewCancelEdit 方法,则将丢弃新行。 另请注意,一次只能编辑一个 DataRowView。 如果在存在挂起行时调用 DataRowViewAddNewBeginEdit 方法,则会对该挂起行隐式调用 EndEdit。 当调用 EndEdit 时,更改将应用于基础 DataTable,并且随后可以使用 DataTableDataSetDataRow 对象的 AcceptChangesRejectChanges 方法来提交或拒绝更改。 如果 AllowNewfalse,则当调用 DataRowViewAddNew 方法时,将引发异常。

如果 AllowEdittrue,可以通过 DataRowView 来修改 DataRow 的内容。 可以使用 DataRowView.EndEdit 确认对基础行的更改,或使用 DataRowView.CancelEdit 拒绝更改。 注意,一次只能编辑一行。 如果在存在挂起行时调用 DataRowViewAddNewBeginEdit 方法,则会对该挂起行隐式调用 EndEdit。 当调用 EndEdit 时,建议更改将放置在基础 DataRowCurrent 行版本中,随后可以使用 DataTableDataSetDataRow 对象的 AcceptChangesRejectChanges 方法来提交或拒绝这些更改。 如果 AllowEditfalse,则当试图修改 DataView 中的值时,将引发异常。

当编辑现有 DataRowView 时,仍将引发基础 DataTable 的事件,并提供建议更改。 请注意,如果对基础 DataRow 调用 EndEditCancelEdit,那么无论是否对 DataRowView 调用 EndEditCancelEdit,都将应用或取消挂起的更改。

如果 AllowDeletetrue,则可以使用 DataViewDataRowView 对象的 Delete 方法删除 DataView 中的行,这些行也将从基础 DataTable 中删除。 随后可以分别使用 AcceptChangesRejectChanges 来提交或拒绝删除。 如果 AllowDeletefalse,当调用 DataViewDataRowViewDelete 方法时,将引发异常。

以下代码示例禁用通过 DataView 删除行的功能,并使用 DataView 向基础表中添加新行。

Dim custTable As DataTable = custDS.Tables("Customers")
Dim custView As DataView = custTable.DefaultView
custView.Sort = "CompanyName"

custView.AllowDelete = False

Dim newDRV As DataRowView = custView.AddNew()
newDRV("CustomerID") = "ABCDE"
newDRV("CompanyName") = "ABC Products"
newDRV.EndEdit()
DataTable custTable = custDS.Tables["Customers"];
DataView custView = custTable.DefaultView;
custView.Sort = "CompanyName";

custView.AllowDelete = false;

DataRowView newDRV = custView.AddNew();
newDRV["CustomerID"] = "ABCDE";
newDRV["CompanyName"] = "ABC Products";
newDRV.EndEdit();

请参见

参考

DataTable

DataView

DataRowView

其他资源

DataView (ADO.NET)