修改 DataView (ADO.NET)

更新: November 2007

您可以使用 DataView 加入、刪除或修改基底資料表中的資料列。DataView 有三個布林值 (Boolean) 屬性,只要設定其中任一個,就能使用 DataView 修改基底資料表的資料。這些屬性是 AllowNewAllowEditAllowDelete。它們都預設為 true

如果 AllowNewtrue,則可使用 DataViewAddNew 方法來建立新的 DataRowView。請注意,除非呼叫 DataRowViewEndEdit 方法,否則不會將新資料列確實加入基礎 DataTable 中。如果呼叫 DataRowViewCancelEdit 方法,則會捨棄新的資料列。另一點要注意的是您一次只能編輯一項 DataRowView。如果您在暫止資料列存在時,呼叫 DataRowViewAddNewBeginEdit 方法,就會在暫止資料列上隱含呼叫 EndEditEndEdit 被呼叫後,變更會套用至基礎 DataTable,而您稍後可使用 DataTableDataSetDataRow 物件的 AcceptChangesRejectChanges 方法來認可或拒絕變更。如果 AllowNewfalse,則您呼叫 DataRowViewAddNew 方法時會擲回例外狀況。

如果 AllowEdittrue,則您可以透過 DataRowView 修改 DataRow 的內容。您可以使用 DataRowView.EndEdit 將變更確認至基礎資料列中,或是使用 DataRowView.CancelEdit 拒絕變更。請注意您一次只能編輯一筆資料列。如果您在暫止資料列存在時,呼叫 DataRowViewAddNewBeginEdit 方法,就會在暫止資料列上隱含呼叫 EndEditEndEdit 被呼叫後,建議的變更會放入基礎 DataRowCurrent 資料列版本,而您稍後可使用 DataTableDataSetDataRow 物件的 AcceptChangesRejectChanges 方法來認可或拒絕變更。如果 AllowEditfalse,則您嘗試修改 DataView 的值時,會擲回例外狀況。

現有 DataRowView 經過編輯後,基礎 DataTable 的事件仍會與建議的變更一起被引發。請注意,如果您呼叫基礎 DataRowEndEditCancelEdit,則不管 DataRowView 上是否有呼叫 EndEditCancelEdit,暫止變更仍會被套用或取消。

如果 AllowDeletetrue,則您可以使用 DataViewDataRowView 物件的 Delete 方法,從 DataView 刪除資料列,這樣資料列就會從基礎 DataTable 中刪除。您稍後可使用 AcceptChanges 來認可刪除,或使用 RejectChanges 來拒絕刪除。如果 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)