HOW TO:將新資料列加入 ListObject 控制項時處理錯誤

更新: 2008 年 7 月

適用於

本主題中的資訊僅適用於指定的 Visual Studio Tools for Office 專案和 Microsoft Office 版本。

文件層級專案

  • Excel 2007

  • Excel 2003

應用程式層級專案

  • Excel 2007

如需詳細資訊,請參閱依應用程式和專案類型提供的功能

使用者可將新資料列加入至繫結至資料的 ListObject 控制項。有時清單物件與資料來源的關聯性會造成常式錯誤。例如,您可以對應要在 ListObject 中顯示的資料行,因此如果省略有限制條件的資料行 (例如無法接受 null 值的欄位),在建立資料行時就會引發錯誤。您可以撰寫程式碼,在 ErrorAddDataBoundRow 事件的事件處理常式中加入遺失的值。

若要處理當加入資料繫結資料列時所發生的錯誤

  1. 在類別層級建立 ID 和 DataTable 的變數。

    Dim id As Integer = 0
    Dim employeeTable As System.Data.DataTable
    
    private int id = 0;
    private System.Data.DataTable employeeTable;
    
  2. 在 Sheet1 類別 (文件層級專案) 或 ThisAddIn 類別 (應用程式層級專案) 的 Startup 事件處理常式中,建立新的 DataTable 及加入範例資料行和資料。

    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. ErrorAddDataBoundRow 事件的事件處理常式中,將下一個遞增的 ID 編號加入至 ID 欄位,並再次加入資料列。

    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;
        }
    }
    

編譯程式碼

  • 這個程式碼範例假設您在顯示這個程式碼的工作表上,有名為 list1 的現有 ListObject

請參閱

工作

HOW TO:將 ListObject 欄對應到資料

HOW TO:將新資料列加入 ListObject 控制項時驗證資料

概念

在應用程式層級增益集的執行階段中擴充 Word 文件和 Excel 活頁簿

Excel 應用程式層級增益集開發

在執行階段將控制項加入至 Office 文件

ListObject 控制項

了解 ListObject 資料行和資料列順序的持續性

其他資源

Office 文件上的控制項

Excel 主控制項

變更記錄

日期

記錄

原因

2008 年 7 月

修改範例,使其可在應用程式層級的增益集中使用。

SP1 功能變更。