Valider les données lorsqu’une nouvelle ligne est ajoutée à un contrôle ListObject

Les utilisateurs peuvent ajouter de nouvelles lignes à un contrôle ListObject qui est lié aux données. Vous pouvez valider les données de l’utilisateur avant d’approuver les modifications apportées à la source de données.

S’applique à : les informations contenues dans cette rubrique s’appliquent aux projets au niveau du document et aux projets de complément VSTO pour Excel. Pour plus d’informations, consultez Fonctionnalités disponibles par application Office lication et le type de projet.

Validation des données

Chaque fois qu’une ligne est ajoutée à un ListObject qui est lié aux données, l’événement BeforeAddDataBoundRow est déclenché. Vous pouvez gérer cet événement pour effectuer la validation de vos données. Par exemple, si votre application exige que seuls les employés âgés de 18 à 65 ans puissent être ajoutés à la source de données, vérifiez que l’âge entré est compris dans cette plage avant l’ajout de la ligne.

Remarque

Vous devez toujours vérifier l’entrée d’utilisateur sur le client, mais aussi sur le serveur. Pour plus d’informations, consultez Applications clientes sécurisées.

Pour valider des données lorsqu’une nouvelle ligne est ajoutée à un ListObject lié aux données

  1. Créez des variables pour l’ID et DataTable au niveau de la classe.

    private int id = 0;
    private System.Data.DataTable employeeTable;
    
  2. Créez un exemple DataTable de colonnes et de données dans le Startup gestionnaire d’événements de la Sheet1 classe (dans un projet au niveau du document) ou ThisAddIn classe (dans un projet de complément VSTO).

    employeeTable = new System.Data.DataTable("Employees");
    
    System.Data.DataColumn column = employeeTable.Columns.Add
        ("Id", typeof(int));
    column.AllowDBNull = false;
    
    employeeTable.Columns.Add("FirstName", typeof(string));
    employeeTable.Columns.Add("LastName", typeof(string));
    employeeTable.Columns.Add("Age", typeof(int));
    
    employeeTable.Rows.Add(id, "Nancy", "Anderson", "56");
    employeeTable.Rows.Add(id, "Robert", "Brown", "44");
    id++;
    
    list1.SetDataBinding(employeeTable, "", "FirstName", "LastName", "Age");
    
    list1.BeforeAddDataBoundRow +=new Microsoft.Office.Tools.Excel.
        BeforeAddDataBoundRowEventHandler(list1_BeforeAddDataBoundRow);
    
  3. Ajoutez du code au gestionnaire d’événements list1_BeforeAddDataBoundRow pour vérifier si l’âge entré est compris dans la plage autorisée.

    private void list1_BeforeAddDataBoundRow(object sender,
        Microsoft.Office.Tools.Excel.BeforeAddDataBoundRowEventArgs e)
    {
        System.Data.DataRow row = ((System.Data.DataRowView)e.Item).Row;
    
        if (row["Age"] != null && row["Age"] != Convert.DBNull)
        {
            int ageEntered = (int)row["Age"];
    
            if (ageEntered < 21 || ageEntered > 65)
            {
                System.Windows.Forms.MessageBox.Show
                    ("Age must be between 21 and 65. The row cannot be added.");
                e.Cancel = true;
                return;
            }
            row["ID"] = id;
            id++;
        }
        else
        {
            System.Windows.Forms.MessageBox.Show("You must enter an age.");
            e.Cancel = true;
        }
    }
    

Compiler le code

Cet exemple de code suppose qu’un ListObject nommé list1 existe dans la feuille de calcul dans laquelle ce code apparaît.