Udostępnij za pośrednictwem


Obsługa zdarzeń zestawu danych

Obiekt DataSet zawiera trzy zdarzenia: Disposed, Initializedi MergeFailed.

Zdarzenie MergeFailed

Najczęściej używane zdarzenie dla obiektu DataSet to MergeFailed, które jest wywoływane, gdy schemat obiektów DataSet, które są scalane, jest w konflikcie. Dzieje się tak, gdy element docelowy i źródło DataRow mają taką samą wartość klucza podstawowego, a właściwość EnforceConstraints jest ustawiona na truewartość. Na przykład, jeśli kolumny klucza podstawowego tabeli scalanej są takie same między tabelami w dwóch obiektach DataSet, zgłoszony zostaje wyjątek i podnoszone jest zdarzenie MergeFailed. Obiekt MergeFailedEventArgs przekazany do MergeFailed zdarzenia ma Conflict właściwość, która identyfikuje konflikt w schemacie między dwoma DataSet obiektami i właściwość identyfikującą Table nazwę tabeli w konflikcie.

Poniższy fragment kodu pokazuje, jak dodać program obsługi zdarzeń dla MergeFailed zdarzenia.

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);  
}  

Zdarzenie zainicjowane

Zdarzenie Initialized występuje po zainicjowaniu nowego wystąpienia DataSet przez konstruktor DataSet.

Właściwość IsInitialized zwraca true, jeśli DataSet zostało zakończone inicjowanie; w przeciwnym razie zwraca false. Metoda BeginInit, która inicjuje DataSet, ustawia IsInitialized na false. Metoda EndInit, która kończy inicjowanie klasy DataSet, ustawia ją na true. Te metody są używane przez środowisko projektowe programu Visual Studio do inicjowania DataSet elementu używanego przez inny składnik. Nie będziesz ich często używać w kodzie.

Zdarzenie zakończone

DataSet pochodzi z MarshalByValueComponent klasy, która uwidacznia zarówno metodę Dispose , jak i Disposed zdarzenie. Zdarzenie Disposed dodaje procedurę obsługi zdarzeń do nasłuchiwania usuniętego zdarzenia w składniku. Jeśli chcesz wykonać kod podczas wywołania metody Disposed, możesz użyć zdarzenia DataSet obiektu Dispose. Dispose zwalnia zasoby używane przez program MarshalByValueComponent.

Uwaga / Notatka

Obiekty DataSet i DataTable dziedziczą po MarshalByValueComponent i obsługują interfejs ISerializable do komunikacji zdalnej. Są to jedyne obiekty ADO.NET, które mogą być zdalne. Aby uzyskać więcej informacji, zobacz Komunikacja zdalna platformy .NET.

Aby uzyskać informacje o innych zdarzeniach dostępnych podczas pracy z DataSet, zobacz Obsługa zdarzeń DataTable i Obsługa zdarzeń DataAdapter.

Zobacz także