Sdílet prostřednictvím


Postupy: Přidávání ověření do vícevrstvé datové sady

Přidání ověřování do datové sady, která je rozdělena na n-vrstvé řešení, je v podstatě stejné jako přidání ověřování pro jednosouborovou datovou sadu(datová sada v jednom projektu).Navrhované umístění pro ověřování dat je během událostí ColumnChanging a RowChanging datové tabulky.

Vytváření a úpravy typovaných datových sad poskytuje funkce, chcete-li vytvořit dílčí třídy, do kterých můžete přidat uživatelský kód do událostí měnících sloupce a řádky datových tabulek v datové sadě.Další informace o přidání kódu k datové sadě v nvrstvých řešeních viz Postupy: Přidávání kódu do datových sad ve víceúrovňových aplikacích a Postupy: Přidávání kódu do prvků TableAdapters ve víceúrovňových aplikacích.Další informace o dílčích třídách naleznete v tématu Postupy: Rozdělení třídy na částečné třídy (návrhář tříd) nebo Částečné třídy a metody (Průvodce programováním v C#).

[!POZNÁMKA]

Když oddělíte datové sady od adaptérů tabulky (nastavením vlastnosti Projekt DataSet), existující částečné třídy datových sad v projektu nebudou automaticky přesunuty.Existující částečné třídy datové sady je nutné ručně přesunout do projektu datové sady.

[!POZNÁMKA]

Návrhář Dataset nevytváří automaticky obslužné rutiny události v jazyce C# pro události ColumnChanging a RowChanging.Je nutné ručně vytvořit obslužnou rutinu pro událost a zapojit obslužnou rutinu události do základní události.Následující postupy obsahují kroky k vytvoření obslužné rutiny události požadované v jazyce Visual Basic i C#.

Ověřování změn v jednotlivých sloupcích

Ověřte hodnoty v jednotlivých sloupcích pomocí manipulace s událostí ColumnChanging.Událost ColumnChanging je vyvolána, když je změněna hodnota ve sloupci.Vytvořte obslužnou rutinu události pro událost ColumnChanging poklepáním na požadovaný sloupec v Vytváření a úpravy typovaných datových sad.

Poprvé, když poklepete na sloupec, návrhář vytvoří obslužnou rutinu události pro událost ColumnChanging.Kromě události ColumnChanging příkaz If…Then je také vytvořen a testuje určitý sloupec.Například následující kód je generován při dvojitém kliknutí na sloupec RequiredDate v tabulce Objednávky Northwind:

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

[!POZNÁMKA]

V projektech v jazyce C# vytvoří Návrhář datových sad pouze částečné třídy pro objekt datovou sadu a jednotlivé tabulky v datové sadě.Návrhář Dataset automaticky nevytváří obslužné rutiny událostí ColumnChanging a RowChanging v jazyce C#, jako je tomu v jazyce Visual Basic.V projektech jazyka C# je nutné ručně vytvořit metodu ke zpracování události a vložení metody do základní události.Následující postup obsahuje kroky k vytvoření obslužné rutiny události požadované v jazyce Visual Basic i C#.

[!POZNÁMKA]

Na vašem počítači se můžou v následujících pokynech zobrazovat jiné názvy nebo umístění některých prvků uživatelského rozhraní Visual Studia. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace najdete v tématu Přizpůsobení nastavení pro vývoj v sadě Visual Studio.

Přidání ověřování při změnách hodnot jednotlivých sloupců.

  1. Otevřete datovou sadu v Vytváření a úpravy typovaných datových sad poklepáním na soubor .xsd v Průzkumníku řešení.Další informace naleznete v tématu Postupy: Otevření datové sady v Návrháři DataSet.

  2. Poklepejte na sloupec, který chcete ověřit.Tato akce vytvoří obslužnou rutinu události ColumnChanging.

    [!POZNÁMKA]

    Návrhář Dataset nevytváří automaticky obslužnou rutinu události pro událost C#.Kód zpracování události v jazyce C# je uveden níže.SampleColumnChangingEvent je vytvořeno a pak připojeno na událost ColumnChanging v metodě EndInit.

  3. Přidejte kód pro ověření, že e.ProposedValue obsahuje data, která splňují požadavky aplikace.Pokud navrhovaná hodnota není přijatelná, nastavte sloupec, aby označoval, že obsahuje chybu.

    Následující příklad kódu ověřuje, zda sloupec Quantity obsahuje více než 0.Pokud je Množství menší než nebo rovno 0, sloupec je nastaven na chybu.Klauzule Else vymaže chybu, pokud je množství větší než 0.Kód v obslužné rutině události měnící sloupec by měl vypadat takto:

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

Ověřování změn v celých řádcích

Ověřte hodnoty v celých řádcích pomocí manipulace s událostí RowChanging.Událost RowChanging je vyvolána, když jsou potvrzeny hodnoty ve všech sloupcích.Je nutné ověřit v události RowChanging, když hodnota v jednom sloupci závisí na hodnotě v jiném sloupci.Zvažte například OrderDate a RequiredDate v tabulce Objednávky v aplikaci Northwind.Při zadání objednávek ověřování zajišťuje, že objednávka není zadána s hodnotu RequiredDate, která je rovna nebo před OrderDate.V tomto příkladu hodnoty sloupců RequiredDate a OrderDate je nutné srovnat, takže ověření změn jednotlivých sloupců nemá smysl.

Vytvořte obslužnou rutinu události pro událost RowChanging poklepáním na název tabulky v záhlaví tabulky na Vytváření a úpravy typovaných datových sad.

Přidání ověřování při změnách celých řádků

  1. Otevřete datovou sadu v Vytváření a úpravy typovaných datových sad poklepáním na soubor .xsd v Průzkumníku řešení.Další informace naleznete v tématu Postupy: Otevření datové sady v Návrháři DataSet.

  2. Poklepejte na záhlaví tabulky dat v návrháři.

    Je vytvořena dílčí třída s obslužnou rutinou události RowChanging a otevře se v editoru kódu.

    [!POZNÁMKA]

    Návrhář Dataset nevytváří automaticky obslužnou rutinu události pro událost RowChanging v projektech C#.Musíte vytvořit metodu ke zpracování události RowChanging a spouštění kódu k připojení události do metody inicializace tabulky.

  3. Přidejte uživatelský kód do částečné deklarace třídy.

  4. Následující kód ukazuje, kam přidat uživatelský kód pro ověření během události RowChanging v jazyce 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
    
  5. Následující kód ukazuje, jak vytvořit obslužnou rutinu události RowChanging a kam přidat uživatelský kód pro ověření během události RowChanging jazyka 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 = "";
            }
        }
    }
    

Viz také

Úkoly

Návod: Vytvoření víceúrovňové datové aplikace

Koncepty

Přehled vícevrstvých datových aplikací

Ověřování dat v datových sadách