Como: Adicionar validação para um DataSet N-tier
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: Adicionar código para os conjuntos de dados em aplicativos de N-tier e Como: Adicionar código ao TableAdapters em N-tier aplicativos.Para obter mais informações sobre classes parciais, consulte Como: Dividir uma classe em classes Parcial ou Parcial classes e métodos (Guia de programação C#).
Observação: |
---|
Quando Você separado conjuntos de dados de TableAdapters (definindo a DataSet Projectpropriedade ), classes parcial do dataset existente no projeto não serão movidas automaticamente.Classes parciais DataSet existente devem ser movidas manualmente para o projeto DataSet. |
Observação: |
---|
O Designer de Conjunto de Dados de Conjunto de Dados não ocorra automaticamente criar manipulador de eventos s em translation from VPE for Csharp para o ColumnChanging e RowChanging eventos. 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ção: |
---|
Em projetos translation from VPE for Csharp, t Ele Designer de Conjunto de Dados de Conjunto de Dados cria apenas classes parcial para as tabelas individuais e o dataset no dataset.O Designer de Conjunto de Dados de Conjunto de Dados não cria automaticamente o manipulador de eventos s para o ColumnChanging e RowChanging eventos no translation from VPE for Csharp como é feito no 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ção: |
---|
Seu computador pode mostrar diferentes nomes ou localizações para alguns dos elementos de 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
Abra o conjunto de dados em Dataset Designer clicando duas vezes no arquivo .xsd no Explorer solução.Para obter mais informações, consulte Como: Abra um Dataset no Designer de Conjunto de Dados de Conjunto de Dados.
Clique duas vezes na coluna que você deseja validar.Essa ação cria o manipulador de eventos ColumnChanging.
Observação: O Dataset Designer não cria automaticamente um manipulador para o evento de C#.O código necessário manipular o evento em translation from VPE for Csharp está incluído abaixo.SampleColumnChangingEvent é criado e, em seguida, conectado até o ColumnChanging evento na EndInit método.
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 Quantity contém mais do que 0.Se a quantidade for menor ou igual a 0, a coluna é definida como um erro.The Else cláusula limpa o erro se a quantidade for maior que 0. O código no manipulador de evento Alterar 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
Abra o conjunto de dados em Dataset Designer clicando duas vezes no arquivo .xsd no Explorer solução.Para obter mais informações, consulte Como: Abra um Dataset no Designer de Conjunto de Dados de Conjunto de Dados.
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ção: O Designer de Conjunto de Dados de Conjunto de Dados não ocorra automaticamente criar um manipulador de eventos para o RowChanging evento translation from VPE for Csharp projetos. 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.
Adicione um código de usuário dentro da declaração de classe parcial.
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
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
Criando aplicativos de dados usando Visual Studio