物件 DataSet 提供三個事件: Disposed、 Initialized和 MergeFailed。
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 構造函式初始化 DataSet 的新實例之後發生。
IsInitialized屬性傳回true,如果DataSet已完成初始化;否則就傳回false。 方法 BeginInit 會開始 DataSet初始化 ,並將設定 IsInitialized 為 false。 方法 EndInit 會結束 的 DataSet初始化,並將它設定為 true。 Visual Studio 設計環境會使用這些方法來初始化由另一個元件正在使用的 DataSet 。 您通常不會在程式代碼中使用它們。
已處置事件
DataSet 衍生自 MarshalByValueComponent 類別,這會同時公開 Dispose 方法與 Disposed 事件。 事件 Disposed 會新增事件處理程式,以接聽元件上已處置的事件。 您可以使用 Disposed 的事件 DataSet,如果要在呼叫 Dispose 方法時執行程式碼。
Dispose 釋放MarshalByValueComponent所使用的資源。
備註
DataSet和DataTable物件繼承自MarshalByValueComponent,並支援ISerializable遠端介面。 這些是唯一可以被遠端操作的 ADO.NET 物件。 如需詳細資訊,請參閱 .NET 遠端處理。
如需使用 DataSet時可用之其他事件的資訊,請參閱 處理 DataTable 事件 和 處理 DataAdapter 事件。