Freigeben über


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

  • Excel 2007

  • Excel 2003

Projekte auf Anwendungsebene

  • Excel 2007

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

  1. 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;
    
  2. 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);
    
  3. 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

Gewusst wie: Überprüfen der Daten, wenn einem ListObject-Steuerelement eine neue Zeile hinzugefügt wird

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

ListObject-Steuerelement

Grundlagen der ListObject-Spalte und der Beibehaltung der Zeilenanordnung

Weitere Ressourcen

Steuerelemente für Office-Dokumente

Excel-Hoststeuerelemente

Änderungsverlauf

Date

Versionsgeschichte

Grund

Juli 2008

Beispiel geändert, damit es in einem Add-In auf Anwendungsebene verwendet werden kann.

SP1-Featureänderung.