修改数据视图

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

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

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

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

如果 AllowDelete为 true,则可以使用 DataView 或 DataRowView 对象的 Delete 方法从 DataView 中删除行,并从基础 DataTable 中删除这些行。 以后可以使用 AcceptChangesRejectChanges 分别提交或拒绝删除。 如果 AllowDeletefalse,则调用 DataView 或 DataRowViewDelete 方法时将引发异常。

下面的代码示例禁用使用 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();  

另请参阅