Compartilhar via


Como: Adicionar validação para um Dataset de n camadas

Adicionar validação a um dataset que é separado em uma solução de n-camadas é basicamente igual a adicionar validação para um único arquivo DataSet (um DataSet em um projeto único). O momento sugerido para executar a validação nos dados é durante os eventos ColumnChanging e / ou RowChanging de uma tabela de dados.

O Dataset Designer fornece a funcionalidade para criar classes parciais para as quais você pode adicionar código de usuário para coluna e linha alterando eventos das tabelas de dados no dataset. Para obter mais informações sobre como adicionar código para um conjunto de dados em uma solução de n-camadas, consulte Como: Adicione código para conjuntos de dados em aplicativos de n camadas e Como: Adicione o código a TableAdapters em aplicativos de n camadas. Para obter mais informações sobre classes parciais, consulte Como: Dividir a uma classe em Classes parciais (Designer de classe) ou Parcial Classes e métodos (guia de programação TRANSLATION FROM VPE FOR CSHARP).

ObservaçãoObservação

Quando você separar DataSets de TableAdapters (configurando a propriedade DataSet Project), classes parciais DataSet existentes no projeto não serão movidas automaticamente. Classes parciais DataSet existente devem ser movidas manualmente para o projeto DataSet.

ObservaçãoObservação

O Dataset Designer não cria automaticamente manipuladores de eventos em C# para os eventos ColumnChanging e RowChanging. Você precisa criar um manipulador de eventos manualmente e conectar o manipulador de eventos ao evento subjacente. Os procedimentos a seguir fornecem as etapas para criar os manipuladores de eventos necessários em C# e em Visual Basic.

Validando alterações para colunas individuais

Valide valores em colunas individuais manipulando o evento ColumnChanging. O evento ColumnChanging é gerado quando o valor em uma coluna é modificado. Crie um manipulador de eventos para o evento ColumnChanging clicando duas vezes na coluna desejada no Dataset Designer.

Na primeira vez que você clicar duas vezes em uma coluna, o designer gera um manipulador de eventos para o evento ColumnChanging. Além do evento ColumnChanging, uma instrução If…Then também é criada que testa a coluna específica. Por exemplo, o código a seguir é gerado quando a coluna DataDeEntrega na tabela Pedidos do Northwind é clicada duas vezes:

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
ObservaçãoObservação

Em projetos C#, o DataSet Designer cria classes parciais somente para o conjunto de dados e tabelas individuais no DataSet. O DataSet Designer não cria automaticamente manipuladores de eventos para os eventos ColumnChanging e RowChanging em C# como ele faz em Visual Basic. Em projetos C#, você precisa construir manualmente um método para manipular o evento e conectar o método ao evento subjacente. Os procedimentos a seguir fornecem as etapas para criar os manipuladores de eventos necessários em C# e em Visual Basic.

ObservaçãoObservação

Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Configurações do Visual Studio.

Para adicionar validação durante alterações em valores de colunas individuais

  1. Abra o dataset na Dataset Designer clicando duas vezes o . xsd arquivo no Solution Explorer. Para obter mais informações, consulte Como: Abra um Dataset no Dataset Designer.

  2. Clique duas vezes na coluna que você deseja validar. Essa ação cria o manipulador de eventos ColumnChanging.

    ObservaçãoObservação

    O Dataset Designer não cria automaticamente um manipulador para o evento de C#. O código necessário para manipular o evento em C# está incluído abaixo. SampleColumnChangingEventé criado e, em seguida, conectado até o ColumnChanging evento o EndInit método.

  3. Adicione código para verificar que e.ProposedValue contém dados que atendem aos requisitos de seu aplicativo. Se o valor proposto é inaceitável, configure a coluna para indicar que ele contém um erro.

    O exemplo de código a seguir valida que a coluna Quantidade contém mais do que 0. Se a quantidade for menor ou igual a 0, a coluna é definida para um erro. O Else cláusula limpa o erro se a quantidade for maior que 0. O código no manipulador de eventos de alteração de coluna deve ser semelhante ao seguinte:

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

Validando alterações em linhas inteiras

Valide valores em todas as linhas manipulando o evento RowChanging. O evento RowChanging é gerado quando os valores em todas as colunas são confirmados. É necessário validar no evento RowChanging quando o valor em uma coluna depende do valor em outra coluna. Por exemplo, considere DataDoPedido e DataDeEntrega na tabela Pedidos no Northwind. Quando pedidos estão sendo inseridos, a validação certifica que um pedido não é inserido quando a DataDeEntrega é igual ou anterior à DataDoPedido. Neste exemplo, os valores de ambas as colunas DataDeEntrega e DataDoPedido precisam ser comparados, para que a validação da alteração de uma coluna individual não faça sentido.

Crie um manipulador de eventos para o evento RowChanging clicando duas vezes no nome da tabela na barra de título da tabela no Dataset Designer.

Para adicionar validação durante alterações em linhas inteiras

  1. Abra o dataset na Dataset Designer clicando duas vezes o . xsd arquivo no Solution Explorer. Para obter mais informações, consulte Como: Abra um Dataset no Dataset Designer.

  2. Clique duas vezes na barra de título da tabela de dados no designer.

    Uma classe parcial é criada com um manipulador de eventos RowChanging e abre no Editor de Código.

    ObservaçãoObservação

    O Dataset Designer não cria automaticamente um manipulador para o evento RowChanging em projetos C#. Você precisa criar um método para manipular o evento RowChanging e executar o código para ligar o evento no método de inicialização da tabela.

  3. Adicione um código de usuário dentro da declaração de classe parcial.

  4. O código a seguir mostra onde adicionar código de usuário para validar durante o evento RowChanging para 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. O código a seguir mostra como criar o manipulador de eventos RowChanging e onde adicionar código de usuário para validar durante o evento RowChanging para 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 = "";
            }
        }
    }
    

Consulte também

Tarefas

Demonstra Passo a passo: Criando um aplicativo de dados N-Tier.

Conceitos

O que há de novo no desenvolvimento de aplicativos de dados

Creating Data Applications by Using Visual Studio

Visão geral de aplicativos de dados N-Tier.

Validação de dados em Datasets