HOW TO:將新資料列加入 ListObject 控制項時處理錯誤
更新: 2008 年 7 月
適用於 |
---|
本主題中的資訊僅適用於指定的 Visual Studio Tools for Office 專案和 Microsoft Office 版本。 文件層級專案
應用程式層級專案
如需詳細資訊,請參閱依應用程式和專案類型提供的功能。 |
使用者可將新資料列加入至繫結至資料的 ListObject 控制項。有時清單物件與資料來源的關聯性會造成常式錯誤。例如,您可以對應要在 ListObject 中顯示的資料行,因此如果省略有限制條件的資料行 (例如無法接受 null 值的欄位),在建立資料行時就會引發錯誤。您可以撰寫程式碼,在 ErrorAddDataBoundRow 事件的事件處理常式中加入遺失的值。
若要處理當加入資料繫結資料列時所發生的錯誤
在類別層級建立 ID 和 DataTable 的變數。
Dim id As Integer = 0 Dim employeeTable As System.Data.DataTable
private int id = 0; private System.Data.DataTable employeeTable;
在 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);
在 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 控制項時驗證資料
概念
在應用程式層級增益集的執行階段中擴充 Word 文件和 Excel 活頁簿
其他資源
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2008 年 7 月 |
修改範例,使其可在應用程式層級的增益集中使用。 |
SP1 功能變更。 |