Procédure pas à pas : ajout d'une validation à une application de données multicouche

Mise à jour : novembre 2007

La validation de données est le processus consistant à confirmer que les valeurs entrées dans des objets de données (par exemple, classes DataTables ou LINQ to SQL) se conforment aux contraintes du schéma d'un objet. La validation garantit également la conformité avec les règles établies pour l'application. Valider les données avant d'envoyer des mises à jour à la base de données sous-jacente est une méthode conseillée pour réduire les erreurs. Cette opération réduit également le nombre potentiel d'allers-retours entre une application et la base de données.

Cette procédure pas à pas fournit des instructions pour ajouter une validation à une application multicouche (solution créée dans la rubrique Procédure pas à pas : création d'une application de données multicouche).

Dans cette procédure pas à pas, vous allez apprendre à effectuer les tâches suivantes :

  • Générer automatiquement des classes à l'aide du Concepteur de DataSet.

  • Ajouter le code pour effectuer la validation lorsque d'une colonne individuelle change.

Composants requis

Pour exécuter cette procédure pas à pas, vous devez disposer des éléments suivants :

Remarque :

Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur Visual Studio dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio.

Ouverture de la solution NTierWalkthrough

Pour ouvrir la solution NTierWalkthrough

Ajout d'une validation pour vérifier les données pendant une modification de colonne individuelle

Cette procédure ajoutera une validation pour vérifier que la valeur de la colonne OrderDate d'une nouvelle commande est la date du jour ou une date antérieure. Dans le cadre de cette application, la colonne OrderDate ne peut pas avoir une date à venir ; les futures commandes ne sont pas autorisées.

Pour ajouter la validation et vérifier la valeur entrée dans la colonne OrderDate

  1. Ouvrez le groupe de données dans le Concepteur de DataSet en double-cliquant sur le fichier NorthwindDataSet.xsd du projet DataAccessTier dans l'Explorateur de solutions.

  2. Double-cliquez sur la colonne OrderDate de la table Orders dans le concepteur. Cette action entraîne la création du gestionnaire d'événements ColumnChanging.

    Remarque :

    Le Concepteur de DataSet ne crée pas automatiquement de gestionnaire d'événements pour l'événement C#. Le code requis pour gérer l'événement en C# est inclus dans la suite de cette procédure. SampleColumnChangingEvent est créé, puis s'abonne à l'événement ColumnChanging dans la méthode EndInit.

  3. Ajoutez le code pour vérifier que e.ProposedValue pour la colonne OrderDate contient la date du jour ou une date antérieure. Si la valeur proposée n'est pas valide, définissez la colonne afin d'indiquer qu'elle contient une erreur.

    L'exemple de code suivant vérifie que la colonne OrderDate colonne contient la date du jour ou une date antérieure. Si la valeur OrderDate est ultérieure à la date du jour, une erreur est affectée à la colonne OrderDate. La clause Else efface l'erreur si la colonne OrderDate contient la date du jour ou une date antérieure.

    Collez le code Visual Basic dans le gestionnaire d'événements ColumnChanging. Collez le code C# dans la déclaration de classe partielle OrdersDataTable.

    If (e.Column.ColumnName = Me.OrderDateColumn.ColumnName) Then
        If CType(e.ProposedValue, DateTime) > Today Then
            e.Row.SetColumnError(e.Column, "OrderDate cannot be in the future")
        Else
            e.Row.SetColumnError(e.Column, "")
        End If
    End If
    
    // Replace the NorthwindDataSet partial class with the following:
    public partial class NorthwindDataSet
    {
        partial class OrdersDataTable
        {
            public override void EndInit()
            {
                base.EndInit();
                // Configure the ColumnChanging event
                // to call the SampleColumnChangingEvent method.
                ColumnChanging += SampleColumnChangingEvent;
            }
    
            public void SampleColumnChangingEvent(object sender, System.Data.DataColumnChangeEventArgs e)
            {
                if (e.Column.ColumnName == OrderDateColumn.ColumnName)
                {
                    if ((System.DateTime)e.ProposedValue > System.DateTime.Today)
                    {
                        e.Row.SetColumnError("OrderDate", " OrderDate cannot be in the future");
                    }
                    else
                    {
                        e.Row.SetColumnError("OrderDate", "");
                    }
                }
    
            }
        }
    }
    

Test de l'application

Pour tester l'application, remplacez la valeur de la colonne OrderDate par une date qui n'est pas valide.

Pour tester l'application

  1. Appuyez sur F5.

  2. Les données des tables Customers et Orders apparaissent sur le formulaire.

  3. Dans le DataGridView qui contient les commandes, modifiez la valeur de la colonne OrderDate (de n'importe quel enregistrement) pour préciser la date de demain.

  4. Naviguez hors de la ligne pour accepter la modification.

    La validation échoue et une icône d'erreur apparaît dans la cellule OrderDate qui contient la valeur non valide.

  5. Positionnez le pointeur de la souris sur l'icône d'erreur pour afficher le texte d'erreur.

  6. Fermez le formulaire.

Étapes suivantes

Selon les spécifications de votre application, vous pouvez effectuer plusieurs étapes après avoir ajouté des validations à une application multicouche. Par exemple, vous pouvez souhaiter faire l'amélioration suivante à cette application :

Voir aussi

Concepts

Nouveautés des données

Autres ressources

Applications de données multicouches

Mise à jour hiérarchique

Accès aux données (Visual Studio)