Comment : gérer des erreurs lorsqu'une nouvelle ligne est ajoutée à un contrôle ListObject
Mise à jour : Juillet 2008
S'applique à |
---|
Les informations de cette rubrique s'appliquent uniquement aux projets Visual Studio Tools pour Office et versions spécifiés de Microsoft Office. 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. Il arrive que la relation de l'objet de liste à la source de données provoque des erreurs habituelles. Par exemple, vous pouvez mapper les colonnes que vous souhaitez voir apparaître dans le ListObject ; par conséquent, si vous omettez des colonnes qui comportent des restrictions, comme un champ qui n'accepte pas les valeurs Null, des erreurs sont retournées à chaque fois qu'une ligne est créée. Vous pouvez rédiger du code pour ajouter les valeurs manquantes dans un gestionnaire d'événements pour l'événement ErrorAddDataBoundRow.
Pour gérer les erreurs qui se produisent lorsqu'une ligne liée aux données est ajoutée
Créez des variables pour l'ID et DataTable au niveau de la classe.
Dim id As Integer = 0 Dim employeeTable As System.Data.DataTable
private 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.ErrorAddDataBoundRow += new Microsoft.Office.Tools.Excel. ErrorAddDataBoundRowEventHandler(list1_ErrorAddDataBoundRow);
Dans le gestionnaire d'événements pour l'événement ErrorAddDataBoundRow, ajoutez le numéro d'identification incrémenté suivant au champ Id et tentez d'ajouter la ligne une nouvelle fois.
Private Sub list1_ErrorAddDataBoundRow(ByVal sender As Object, ByVal e As _ Microsoft.Office.Tools.Excel.ErrorAddDataBoundRowEventArgs) _ Handles list1.ErrorAddDataBoundRow Dim row As System.Data.DataRow = (CType(e.Item, System.Data.DataRowView)).Row If TypeOf (e.InnerException) Is NoNullAllowedException Then row("Id") = id id += 1 e.Retry = True End If End Sub
private void list1_ErrorAddDataBoundRow(object sender, Microsoft.Office.Tools.Excel.ErrorAddDataBoundRowEventArgs e) { System.Data.DataRow row = ((System.Data.DataRowView)e.Item).Row; if (e.InnerException is NoNullAllowedException) { row["Id"]= id; id++; e.Retry = 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 : valider des données 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. |