Gewusst wie: Behandeln von Fehlern beim Hinzufügen einer neuen Zeile zu einem ListObject-Steuerelement
Aktualisiert: Juli 2008
Betrifft |
---|
Die Informationen in diesem Thema gelten nur für die angegebenen Projekte und Versionen von Visual Studio Tools for Office von Microsoft Office. Projekte auf Dokumentebene
Projekte auf Anwendungsebene
Weitere Informationen hierzu finden Sie unter Verfügbare Features nach Anwendung und Projekttyp. |
Benutzer können einem an Daten gebundenen ListObject-Steuerelement neue Zeilen hinzufügen. Manchmal verursacht die Beziehung des Listenobjekts zur Datenquelle routinemäßige Fehler. Sie können beispielsweise festlegen, welche Spalten im ListObject angezeigt werden sollen. Wenn Sie jedoch Spalten mit Einschränkungen auslassen, wie zum Beispiel ein Feld, das keine NULL-Werte enthalten kann, werden bei jedem Erstellen einer Zeile Fehler ausgelöst. Sie können Code schreiben, um die fehlenden Werte in einem Ereignishandler für das ErrorAddDataBoundRow-Ereignis hinzuzufügen.
So behandeln Sie Fehler, die beim Hinzufügen einer datengebundenen Zeile auftreten
Erstellen Sie auf Klassenebene Variablen für die ID und für DataTable.
Dim id As Integer = 0 Dim employeeTable As System.Data.DataTable
private int id = 0; private System.Data.DataTable employeeTable;
Erstellen Sie eine neue DataTable, und fügen Sie Beispielspalten und -daten im Startup-Ereignishandler der Sheet1-Klasse (in einem Projekt auf Dokumentebene) oder der ThisAddIn-Klasse (in einem Projekt auf Anwendungsebene) hinzu.
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);
Fügen Sie im Ereignishandler für das ErrorAddDataBoundRow-Ereignis die nächsthöhere ID dem ID-Feld hinzu, und fügen Sie die Zeile erneut hinzu.
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; } }
Kompilieren des Codes
- In diesem Codebeispiel wird davon ausgegangen, dass ein ListObject mit dem Namen list1 in dem Arbeitsblatt vorhanden ist, in dem dieser Code angezeigt wird.
Siehe auch
Aufgaben
Gewusst wie: Zuordnung von ListObject-Spalten zu Daten
Konzepte
Erweitern von Word-Dokumenten und Excel-Arbeitsmappen in Add-Ins auf Anwendungsebene zur Laufzeit
Entwicklung von Add-Ins auf Anwendungsebene für Excel
Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit
Grundlagen der ListObject-Spalte und der Beibehaltung der Zeilenanordnung
Weitere Ressourcen
Steuerelemente für Office-Dokumente
Änderungsverlauf
Date |
Versionsgeschichte |
Grund |
---|---|---|
Juli 2008 |
Beispiel geändert, damit es in einem Add-In auf Anwendungsebene verwendet werden kann. |
SP1-Featureänderung. |