處理 DataSet 的事件

DataSet 物件提供三個事件: DisposedInitializedMergeFailed

MergeFailed 事件

DataSet 物件最常用的事件為 MergeFailed,此事件會在正在合併之 DataSet 物件的結構描述發生衝突時引發。 當目標與來源 DataRow 具有相同的主索引鍵值,且 EnforceConstraints 屬性設為 true時,就會發生此情況。 例如,如果進行合併之資料表中的主索引鍵資料行與兩個 DataSet 物件中的資料表相同,便會擲回例外狀況且引發 MergeFailed 事件。 傳遞給 MergeFailedEventArgs 事件的 MergeFailed 物件具有 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) 之後。

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

已處置的事件

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

注意

DataSetDataTable 物件繼承自 MarshalByValueComponent,並且支援供遠端作業使用的 ISerializable 介面。 這些是唯一可以進行遠端通訊的 ADO.NET 物件。 如需詳細資訊,請參閱 .NET 遠端處理 (英文)。

如需使用 DataSet 時可用之其他事件的相關資訊,請參閱處理 DataTable 事件處理 DataAdapter 事件

另請參閱