修改数据视图

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

如果AllowNew为 true,则可以使用DataViewAddNew方法来创建一个新的DataRowView。 请注意,只有在调用DataRowViewEndEdit方法时,才会实际向DataTable中添加一个新行。 DataRowViewCancelEdit方法被调用时,新行会被放弃。 另请注意,一次只能编辑一个 DataRowView 。 如果在有待处理行时调用 AddNewBeginEdit 方法 DataRowView ,则会在该行上隐式调用 EndEdit 。 调用EndEdit时,这些更改将应用于基础DataTable,以后可以使用AcceptChangesRejectChanges方法提交或拒绝这些更改,这些方法可以应用于DataTableDataSetDataRow对象。 如果AllowNew为 false,则调用 AddNewDataRowView 的方法时将引发异常。

如果AllowEdit为 true,可以通过 DataRow 修改 a 的内容。 可以使用 DataRowView.EndEdit 确认对基础行的更改,或使用 DataRowView.CancelEdit 拒绝更改。 请注意,一次只能编辑一行。 如果在存在挂起行时调用 DataRowViewAddNewBeginEdit 方法,则会在挂起行上隐式调用 EndEdit。 当调用\EndEdit时,建议的更改将设置在\Current基础\DataRow的行版本中,以后可以使用AcceptChangesRejectChanges方法提交或拒绝这些更改,具体对象可以是DataTable、DataSet或其他对象。 如果AllowEdit为 false,则尝试修改 DataView 中的值时会引发异常。

编辑现有 DataRowView 时,相关的基础事件 DataTable 仍会因为建议的更改而触发。 请注意,如果在基础 DataRow 上调用 EndEditCancelEdit,则无论是否在 DataRowView 上调用 EndEditCancelEdit,挂起的更改都会被应用或取消。

如果AllowDeletetrue,那么可以使用DataView方法的DataView对象或Delete对象从DataRowView中删除行,并且这些行也会从基础DataTable中被删除。 以后可以使用AcceptChanges提交删除或使用RejectChanges拒绝删除。 如果AllowDelete为 false,调用DeleteDataViewDataRowView方法时将引发异常。

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

另请参阅