可以使用该 DataView 函数在基础表中添加、删除或修改数据行。 使用 DataView 修改基础表中的数据的功能通过设置 DataView 的三个布尔属性之一来控制。 这三个属性是 AllowNew、AllowEdit 和 AllowDelete。 默认情况下,它们设置为 true 。
如果 AllowNew 为 true,则可以使用 AddNewDataView 的方法创建新的 DataRowView。 请注意,新的行实际上不会添加到基础DataTable中,直到调用EndEdit的方法为止。 CancelEdit如果调用 DataRowView 的方法,则会丢弃新行。 另请注意,一次只能编辑一个 DataRowView 。 如果在存在挂起行时调用 DataRowView 的 AddNew 或 BeginEdit 方法,则在挂起的行上隐式调用 EndEdit。 调用 EndEdit 时,这些更改将应用于基础 DataTable,以后可以使用 DataTable、DataSet 或 DataRow 对象的 AcceptChanges 或 RejectChanges 方法提交或拒绝这些更改。 如果 AllowNew 为 false,则调用 DataRowView 的 AddNew 方法时将引发异常。
如果 AllowEdit 为 true,可以通过 DataRowView 修改 DataRow 的内容。 可以使用 DataRowView.EndEdit 确认对基础行的更改,或使用 DataRowView.CancelEdit 拒绝更改。 请注意,一次只能编辑一行。 如果在存在挂起的行时调用 DataRowView 的 AddNew 或 BeginEdit 方法,则在挂起的行上隐式调用 EndEdit。 调用 EndEdit 时,建议的更改将放置在基础 DataRow 的当前行版本中,以后可以使用 DataTable、DataSet 或 DataRow 对象的 AcceptChanges 或 RejectChanges 方法提交或拒绝这些更改。 如果 AllowEdit 为 false,则尝试修改 DataView 中的值时会引发异常。
当编辑现有 DataRowView 时,仍将引发基础 DataTable 的事件,并提供建议更改。 请注意,如果在基础 DataRow 上调用 EndEdit 或 CancelEdit,无论在 DataRowView 上调用 EndEdit 还是 CancelEdit,挂起的更改都将应用或取消。
如果 AllowDelete为 true,则可以使用 DataView 或 DataRowView 对象的 Delete 方法从 DataView 中删除行,并从基础 DataTable 中删除这些行。 以后可以使用 AcceptChanges 或 RejectChanges 分别提交或拒绝删除。 如果 AllowDelete 为 false,则调用 DataView 或 DataRowView 的 Delete 方法时将引发异常。
下面的代码示例禁用使用 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();