Porady: dodawanie sprawdzania do warstwowego zestawu danych
Dodawanie sprawdzania poprawności do zestawu, który jest podzielony na rozwiązanie n-warstwowe jest zasadniczo jest takie samo, jak dodawanie sprawdzania poprawności do pojedynczego pliku zestawu danych (zestawu danych w jednym projekcie).Proponowana lokalizacja na sprawdzenie poprawności danych jest podczas ColumnChanging i/lub RowChanging zdarzenia tabeli danych.
Tworzenie i edytowanie wpisanych zestawów danych zawiera funkcje do tworzenia klas częściowych, do których można dodać kod użytkownika do kolumn i wierszy zmieniający wydarzenia tabel danych w zestawie danych.Aby uzyskać więcej informacji na temat dodawania kodu zestawu danych w rozwiązaniu wielowarstwowym, zobacz Porady: dodawanie kodu do zestawów danych w aplikacjach warstwowych i Porady: dodawanie kodu do TableAdapters w aplikacjach warstwowych.Aby uzyskać więcej informacji na temat częściowych klas, zobacz Porady: podział klas na klasy częściowe (Projektant klas) lub Klasy częściowe i metody (Przewodnik programowania w języku C#).
[!UWAGA]
Kiedy oddzielisz zestawy danych z TableAdapters (przez ustawienie zestawu danych projektu właściwość), istniejące częściowe klasy zestawu danych w projekcie nie zostaną automatycznie przeniesione.Istniejące klasy częściowego zestawu danych należy przenieść ręcznie do projektu zestawu danych.
[!UWAGA]
Projektant Zestawu danych nie tworzy automatycznie obsługi zdarzeń w języku C# dla ColumnChanging i RowChanging zdarzenia.Należy ręcznie utworzyć program obsługi zdarzeń i podłączyć moduł obsługi zdarzeń do podstawowego zdarzenia.Poniższe procedury zawierają kroki, aby utworzyć procedury obsługi zdarzeń wymagane zarówno w języku Visual Basic i C#.
Sprawdzanie poprawności zmian do poszczególnych kolumn
Sprawdź poprawność wartości w poszczególnych kolumnach obsługi ColumnChanging zdarzenia.ColumnChanging zdarzenie jest wywoływane, gdy wartość w kolumnie jest modyfikowana.Utwórz procedurę obsługi zdarzeń dla zdarzenia ColumnChanging klikając dwukrotnie odpowiednią kolumnę na Tworzenie i edytowanie wpisanych zestawów danych.
Kliknij dwukrotnie kolumnę, po raz pierwszy projektant generuje moduł obsługi zdarzenia dla ColumnChanging zdarzenia.W uzupełnieniu do zdarzenia ColumnChanging, tworzona jest również instrukcja If…Then sprawdzająca określone kolumny.Na przykład, poniższy kod jest generowany gdy kolumna RequiredDate w tabeli Northwind Orders zostanie dwukrotnie kliknięta:
Private Sub OrdersDataTable_ColumnChanging(ByVal sender As System.Object, ByVal e As System.Data.DataColumnChangeEventArgs) Handles Me.ColumnChanging
If (e.Column.ColumnName = Me.RequiredDateColumn.ColumnName) Then
' Add validation code here.
End If
End Sub
[!UWAGA]
W projektach C#, Projektant obiektów Dataset tworzy tylko częściowe klasy dla zestawów danych i poszczególnych tabel w zestawie danych.Projektant Zestawu danych nie tworzy automatycznie obsługi zdarzeń ColumnChanging i RowChanging zdarzenia w języku C#, tak jak to robi w programie Visual Basic.W projektach C# należy ręcznie utworzyć metodę obsługi zdarzenia i podpiąć metodę do zdarzenia bazowego.Poniższa procedura zawiera kroki, aby utworzyć procedury obsługi zdarzeń wymagane zarówno w języku Visual Basic i C#.
[!UWAGA]
Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.
Aby dodać sprawdzanie poprawności podczas zmiany wartości poszczególnych kolumn
Otwórz element zestawu danych w Tworzenie i edytowanie wpisanych zestawów danych przez dwukrotne kliknięcie pliku XSD w Eksploratorze rozwiązań.Aby uzyskać więcej informacji, zobacz Porady: otwieranie zestawu w narzędziu Projektant obiektów Dataset.
Kliknij dwukrotnie kolumnę, której poprawność chcesz sprawdzić.Ta akcja tworzy ColumnChanging programu obsługi zdarzeń.
[!UWAGA]
Projektant Zestawu danych nie tworzy automatycznie zdarzenia obsługi dla zdarzenia języka C#.Poniżej znajduje się kod do obsługi zdarzeń w języku C#.SampleColumnChangingEvent jest tworzony i następnie jest podłączone do ColumnChanging zdarzenia w EndInit metodzie.
Dodaj kod, aby sprawdzić, czy e.ProposedValue zawiera dane, które spełniają wymagania aplikacji.Jeżeli proponowana wartość jest nieakceptowana, należy ustawić kolumny, aby wskazać, że zawiera błąd.
Poniższy przykład kodu sprawdza, czy kolumna Jakość zawiera więcej niż 0.Jeśli Ilość jest mniejsza niż lub równa 0, kolumnę ustawiono jako błąd.Else klauzula czyści ten błąd, jeśli ilość jest większa niż 0.Kod obsługi w zdarzeniu zmieniającej się kolumny powinna wyglądać następująco:
If (e.Column.ColumnName = Me.QuantityColumn.ColumnName) Then If CType(e.ProposedValue, Short) <= 0 Then e.Row.SetColumnError(e.Column, "Quantity must be greater than 0") Else e.Row.SetColumnError(e.Column, "") End If End If
// C# // Add this code to the DataTable // partial class. public override void EndInit() { base.EndInit(); // Hook up the ColumnChanging event // to call the SampleColumnChangingEvent method. ColumnChanging += SampleColumnChangingEvent; } public void SampleColumnChangingEvent(object sender, System.Data.DataColumnChangeEventArgs e) { if (e.Column.ColumnName == QuantityColumn.ColumnName) { if ((short)e.ProposedValue <= 0) { e.Row.SetColumnError("Quantity", "Quantity must be greater than 0"); } else { e.Row.SetColumnError("Quantity", ""); } } }
Sprawdzanie poprawności zmiany całych wierszy
Sprawdź wartości we wszystkich wierszach obsługując RowChanging zdarzenia.RowChanging zdarzenie jest wywoływane, gdy wartości we wszystkich kolumnach są zatwierdzone.Należy sprawdzić poprawność w zdarzeniu RowChanging, kiedy wartość w jednej kolumnie opiera się na wartości w innej kolumnie.Rozważmy na przykład OrderDate i RequiredDate w tabeli zamówień w bazie danych Northwind.Po wprowadzeniu zamówień, sprawdzania poprawności upewnia się ,czy zamówienie nie jest wprowadzone z DataDostawy, który jest w lub przed DataZamówienia.W tym przykładzie wartości dla kolumn RequiredDate i OrderDate muszą być porównane, więc zmiana sprawdzania poprawności poszczególnych kolumn nie ma sensu.
Utwórz procedurę obsługi zdarzeń dla zdarzenia RowChanging klikając dwukrotnie nazwę tabeli, na pasku tytułu tabeli na Tworzenie i edytowanie wpisanych zestawów danych.
Aby dodać sprawdzanie poprawności podczas zmiany do całych wierszy
Otwórz element zestawu danych w Tworzenie i edytowanie wpisanych zestawów danych przez dwukrotne kliknięcie pliku XSD w Eksploratorze rozwiązań.Aby uzyskać więcej informacji, zobacz Porady: otwieranie zestawu w narzędziu Projektant obiektów Dataset.
Kliknij dwukrotnie pasek tytułu tabeli danych w projektancie.
Częściowa klasa jest tworzona z programu obsługi zdarzeń RowChanging i otwiera się w Edytorze kodu.
[!UWAGA]
Projektant Zestawu danych nie tworzy automatycznie zdarzenia obsługi dla RowChanging zdarzenia języka C#.Musisz stworzyć metodę do obsługi RowChanging zdarzenia i wywołać kod, żeby podpiąć zdarzenie w metodzie inicjalizacji tabeli.
Dodaj kod użytkownika wewnątrz deklaracji klasy częściowej.
Poniższy kod przedstawia gdzie dodać kod użytkownika do sprawdzania poprawności podczas RowChanging zdarzenia dla języka Visual Basic:
Partial Class OrdersDataTable Private Sub OrdersDataTable_OrdersRowChanging(ByVal sender As System.Object, ByVal e As OrdersRowChangeEvent) Handles Me.OrdersRowChanging ' Add logic to validate columns here. If e.Row.RequiredDate <= e.Row.OrderDate Then ' Set the RowError if validation fails. e.Row.RowError = "Required Date cannot be on or before the OrderDate" Else ' Clear the RowError when validation passes. e.Row.RowError = "" End If End Sub End Class
Poniższy kod przedstawia sposób tworzenia RowChanging programu obsługi zdarzeń i gdzie można dodawać kod użytkownika do sprawdzania poprawności podczas RowChanging zdarzenia w języku C#:
partial class OrdersDataTable { public override void EndInit() { base.EndInit(); // Hook up the event to the // RowChangingEvent method. OrdersRowChanging += RowChangingEvent; } public void RowChangingEvent(object sender, OrdersRowChangeEvent e) { // Perfom the validation logic. if (e.Row.RequiredDate <= e.Row.OrderDate) { // Set the row to an error when validation fails. e.Row.RowError = "Required Date cannot be on or before the OrderDate"; } else { // Clear the RowError if validation passes. e.Row.RowError = ""; } } }
Zobacz też
Zadania
Wskazówki: tworzenie aplikacji warstwowych