共用方式為


處理 DataSet 事件 (ADO.NET)

更新: November 2007

DataSet 物件提供三個事件:DisposedInitializedMergeFailed

MergeFailed 事件

DataSet 物件最常用的事件為 MergeFailed,此事件會在正在合併之 DataSet 物件的結構描述發生衝突時引發。當目標與來源 DataRow 具有相同的主索引鍵值,且 EnforceConstraints 屬性設為 true 時,就會發生此情況。例如,如果進行合併之資料表中的主索引鍵資料行與兩個 DataSet 物件中的資料表相同,便會擲回例外狀況且引發 MergeFailed 事件。傳遞給 MergeFailed 事件的 MergeFailedEventArgs 物件具有 Conflict 屬性,可識別兩個 DataSet 物件間的結構描述衝突,也具有 Table 屬性,可識別發生衝突的資料表名稱。

下列程式碼片段會顯示如何加入 MergeFailed 事件的事件處理常式。

AddHandler workDS.MergeFailed, New MergeFailedEventHandler( _
  AddressOf DataSetMergeFailed)

Private Shared Sub DataSetMergeFailed(  _
  sender As Object,args As MergeFailedEventArgs)
  Console.WriteLine("Merge failed for table " & args.Table.TableName)
  Console.WriteLine("Conflict = " & args.Conflict)
End Sub
workDS.MergeFailed += new MergeFailedEventHandler(DataSetMergeFailed);

private static void DataSetMergeFailed(
  object sender, MergeFailedEventArgs args)
{
  Console.WriteLine("Merge failed for table " + args.Table.TableName);
  Console.WriteLine("Conflict = " + args.Conflict);
}

初始化的事件

Initialized 事件發生在 DataSet 建構函式 (Constructor) 初始化 DataSet 的新執行個體 (Instance) 之後。

如果 DataSet 已完成初始化,IsInitialized 屬性會傳回 true,否則會傳回 false。開始 DataSet 初始化作業的 BeginInit 方法會將 IsInitialized 設為 false。EndInit 方法 (結束 DataSet 的初始化) 會將其設定為 true。Visual Studio 設計環境會使用這些方法初始化其他元件正在使用的 DataSet。您通常不會在程式碼中使用這些方法。

已處置的事件

DataSet 是衍生自 MarshalByValueComponent 類別 (Class),此類別會公開 (Expose) Dispose 方法和 Disposed 事件。Disposed事件會新增事件處理常式以在元件上監聽清除的事件。如果想要在呼叫 Dispose方法時執行程式碼,您可以使用 DataSet 的 Disposed事件。Dispose會釋放 MarshalByValueComponent 使用的資源。

注意事項:

DataSet 和 DataTable 物件都是繼承自 MarshalByValueComponent,並且支援遠端處理需的 ISerializable 介面。這些是唯一可以進行遠端通訊的 ADO.NET 物件。如需詳細資訊,請參閱遠端物件

如需使用 DataSet 時其他可用事件的詳細資訊,請參閱處理 DataTable 事件 (ADO.NET)處理 DataAdapter 事件 (ADO.NET)

請參閱

其他資源

DataSet、DataTable 及 DataView (ADO.NET)

驗證資料

擷取和修改 ADO.NET 中的資料