Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Mise à jour : Juillet 2008
S'applique à |
|---|
Les informations de cette rubrique s'appliquent uniquement aux projets Visual Studio Tools pour Office et versions de Microsoft Office spécifiés. Projets au niveau du document
Projets au niveau de l'application
Pour plus d'informations, consultez Fonctionnalités disponibles par type d'application et de projet. |
Les utilisateurs peuvent ajouter de nouvelles lignes à un contrôle ListObject 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.
Si une erreur se produit, vous pouvez écrire du code pour fournir des données supplémentaires afin de corriger l'erreur. Pour plus d'informations, consultez Comment : gérer des erreurs lorsqu'une nouvelle ligne est ajoutée à un contrôle ListObject.
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 requiert que seuls les employés âgés de 18 à 65 ans puissent être ajoutés à la source de données, vous pouvez vérifier que l'âge entré est compris dans cet intervalle avant que la ligne ne soit ajoutée.
Remarque : |
|---|
Vous devez toujours vérifier l'entrée d'utilisateur sur le serveur ainsi que sur le client. Pour plus d'informations, consultez Applications clientes sécurisées (ADO.NET). |
Pour valider des données lorsqu'une nouvelle ligne est ajoutée au contrôle ListObject lié aux données
Créez des variables pour l'ID et DataTable au niveau de la classe.
Dim id As Integer = 0 Dim employeeTable As System.Data.DataTableprivate int id = 0; private System.Data.DataTable employeeTable;Créez un nouveau DataTable et ajoutez des exemples de colonnes et de données dans le gestionnaire d'événements Startup de la classe Sheet1 (dans un projet au niveau du document) ou dans la classe ThisAddIn (dans un projet au niveau de l'application).
employeeTable = New System.Data.DataTable("Employees") Dim column As System.Data.DataColumn = _ employeeTable.Columns.Add("Id", GetType(Int32)) column.AllowDBNull = False employeeTable.Columns.Add("FirstName", GetType(String)) employeeTable.Columns.Add("LastName", GetType(String)) employeeTable.Columns.Add("Age", GetType(Int32)) employeeTable.Rows.Add(id, "Nancy", "Anderson", 56) employeeTable.Rows.Add(id, "Robert", "Brown", 44) id += 1 list1.SetDataBinding(employeeTable, "", "FirstName", "LastName", "Age")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);Ajoutez du code au gestionnaire d'événements list1_BeforeAddDataBoundRow pour vérifier si l'âge entré se situe dans l'intervalle autorisé.
Private Sub list1_BeforeAddDataBoundRow(ByVal sender As Object, ByVal e As _ Microsoft.Office.Tools.Excel.BeforeAddDataBoundRowEventArgs) _ Handles list1.BeforeAddDataBoundRow Dim row As System.Data.DataRow = (CType(e.Item, System.Data.DataRowView)).Row If Not row("Age") Is Nothing And Not row("Age") Is Convert.DBNull Then Dim ageEntered As Integer = CType(row("Age"), Int32) If ageEntered < 21 Or ageEntered > 65 Then System.Windows.Forms.MessageBox.Show _ ("Age must be between 21 and 65. The row cannot be added.") e.Cancel = True Return End If row("ID") = id id += 1 Else System.Windows.Forms.MessageBox.Show("You must enter an age.") e.Cancel = True End If End Subprivate 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; } }
Compilation du code
Cet exemple de code suppose qu'un contrôle ListObject nommé list1 existe dans la feuille de calcul dans laquelle ce code apparaît.
Voir aussi
Tâches
Comment : mapper des colonnes ListObject aux données
Comment : gérer des erreurs lorsqu'une nouvelle ligne est ajoutée à un contrôle ListObject
Concepts
Développement d'un complément d'application pour Excel
Ajout de contrôles à des documents Office au moment de l'exécution
Fonctionnement de la persistance de l'ordre des lignes et colonnes ListObject
Autres ressources
Contrôles sur des documents Office
Historique des modifications
Date |
Historique |
Raison |
|---|---|---|
|
Juillet 2008 |
Modification de l'exemple de manière à pouvoir l'utiliser dans un complément d'application. |
Modifications de fonctionnalités dans le SP1. |
Remarque :