使用 DataView 修改資料
您可以使用 DataView 加入、刪除或修改基礎資料表中的資料列。DataView 有三個布林 (Boolean) 屬性,只要設定其中任一個,就能使用 DataView 修改基礎資料表的資料。這些屬性是 AllowNew、AllowEdit 和 AllowDelete。它們都預設為 true。
如果 AllowNew 為 true,則可使用 DataView 的 AddNew 方法來建立新的 DataRowView。請注意,除非呼叫 DataRowView 的 EndEdit 方法,否則不會將新資料列確實加入基礎 DataTable 中。如果呼叫 DataRowView 的 CancelEdit 方法,則會捨棄新的資料列。另一點要注意的是您一次只能編輯一項 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 的 Current 資料列版本,而您稍後可使用 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();
請參閱
參考
DataTable Class
DataView Class
DataRowView Class