處理 DataSet 的事件
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
建構函式 (Constructor) 初始化 DataSet
的新執行個體 (Instance) 之後。
如果 IsInitialized 已完成初始化, true
屬性會傳回 DataSet
,否則會傳回 false
。 開始 BeginInit 初始化作業的 DataSet
方法會將 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 物件。 如需詳細資訊,請參閱 .NET 遠端處理 (英文)。
如需使用 DataSet
時可用之其他事件的相關資訊,請參閱處理 DataTable 事件和 處理 DataAdapter 事件。
另請參閱
- DataSet、DataTable 和 DataView
- 驗證資料 \(機器翻譯\)
- 在 ADO.NET 中擷取和修改資料
- ADO.NET 概觀 \(部分機器翻譯\)