ListObject 控制項
ListObject 控制項是公開事件且可繫結至資料的清單。 當您將清單加入至工作表時,Visual Studio 會建立 ListObject 控制項,您可以直接對這個控制項進行程式設計,而不必周遊 Microsoft Office Excel 物件模型。
**適用於:**本主題中的資訊適用於 Excel 2007 和 Excel 2010 的文件層級專案和應用程式層級專案。如需詳細資訊,請參閱依 Office 應用程式和專案類型提供的功能。
建立控制項
在文件層級專案中,您可以在設計階段或執行階段將 ListObject 控制項加入至工作表。 在應用程式層級專案中,您只能在執行階段將 ListObject 控制項加入至工作表。 如需詳細資訊,請參閱 HOW TO:將 ListObject 控制項加入至工作表。
注意事項 |
---|
根據預設,當工作表關閉時,動態建立的清單物件不會保存為工作表中的主控制項。 如需詳細資訊,請參閱在執行階段將控制項加入至 Office 文件。 |
將資料繫結至控制項
ListObject 控制項支援簡單和複雜的資料繫結。 您可以在設計階段使用 DataSource 和 DataMember 屬性,或在執行階段使用 SetDataBinding 方法,將 ListObject 控制項繫結至資料來源。
注意事項 |
---|
當 ListObject 繫結至資料變更就引發事件的資料來源 (例如 DataTable) 時,它就會自動進行更新。 如果您將 ListObject 繫結至資料變更時不會引發事件的資料來源,就必須呼叫 RefreshDataRow 或 RefreshDataRows 方法來更新 ListObject。 |
當您將重複的結構描述項目對應至工作表儲存格,藉此將 ListObject 加入至該儲存格時,Visual Studio 會自動將 ListObject 對應至產生的資料集。 不過,ListObject 並不會自動繫結至資料。 在文件層級專案中,您可以在設計階段或執行階段採取一些步驟,將 ListObject 繫結至資料集。 您可以利用程式設計方式,在執行階段於應用程式層級增益集中將 ListObject 繫結至資料集。
由於資料與 ListObject 分離,因此您應該透過繫結的資料集新增和移除資料,而不是直接透過 ListObject 進行。 如果繫結資料集內的資料已透過任何機制進行更新,則 ListObject 控制項會自動反映這些變更。 如需詳細資訊,請參閱 將資料繫結至 Office 方案中的控制項。
您可以將 ListObject 繫結至資料來源,藉以迅速填滿 ListObject 控制項。 如果您在資料繫結的 ListObject 中編輯資料,則資料來源中也會自動進行這些變更。 如果您想要填滿 ListObject,然後讓使用者變更 ListObject 中的資料但卻不會修改資料來源,可以使用 Disconnect 方法將 ListObject 與資料來源中斷連結。 如需詳細資訊,請參閱 HOW TO:將資料填入 ListObject 控制項。
注意事項 |
---|
重疊的 ListObject 控制項不支援資料繫結。 |
提高 ListObject 控制項的效能
如果先繫結控制項,然後呼叫 ReadXml 填入資料集,則將 XML 檔案讀取至資料繫結 ListObject 控制項會變慢。 若要提高效能,請在繫結控制項之前,先呼叫 ReadXml。
中斷 ListObject 控制項與資料來源的連接
當您將 ListObject 控制項繫結至資料來源並藉以填滿資料後,就可以中斷該繫結,如此對清單物件中資料所做的變更就不會影響資料來源。 如需詳細資訊,請參閱 HOW TO:將資料填入 ListObject 控制項。
還原資料行和資料列順序
您將資料繫結至在設計階段加入至文件的 ListObject 控制項時,Visual Studio 會在每次儲存活頁簿時,記錄資料行和資料列順序。 如果使用者在執行階段移動 ListObject 資料行或資料列,在下一次開啟活頁簿時,則會保留新的順序,而且 ListObject 控制項會重新繫結至資料來源。
如果想要將 ListObject 還原為其原始的資料行和資料列順序,則可以呼叫 ResetPersistedBindingInformation 方法。 這個方法會移除與指定 ListObject 之資料行和資料列順序相關的自訂文件屬性。 如果不想保留 ListObject 的資料行和資料列順序,請從活頁簿的 Shutdown 事件呼叫這個方法。
格式
可套用至 Microsoft.Office.Interop.Excel.ListObject 的格式,也可以套用至 Microsoft.Office.Tools.Excel.ListObject 控制項, 包括框線、字型、數字格式和樣式。 使用者可以在資料繫結 ListObject 中重新排列欄,只要 ListObject 是在設計階段加入至文件,這些變更就會與文件一起持續。 當下次開啟文件時,清單物件將會繫結至相同的資料來源,不過欄順序會反映使用者的變更。
在執行階段新增和移除欄
您不能在執行階段手動新增或移除資料繫結 ListObject 控制項中的欄。 如果使用者嘗試刪除某個欄,將會立即還原該欄,並移除任何新增的欄。 因此,請務必撰寫程式碼,向使用者解釋為何無法在繫結至資料的 ListObject 上執行這些動作。 Visual Studio 會在與資料繫結相關的 ListObject 上提供多個的事件。 例如,您可以使用 OriginalDataRestored 事件,在使用者嘗試刪除資料時,提出該資料無法刪除且已還原的警告。
在執行階段新增和移除列
只要資料來源允許加入新列且不是唯讀,您便可以在資料繫結 ListObject 控制項中手動新增和移除列。 您可以針對事件撰寫程式碼,例如針對 BeforeAddDataBoundRow 以驗證資料。 如需詳細資訊,請參閱 HOW TO:將新資料列加入 ListObject 控制項時驗證資料。
有時清單物件與資料來源的關聯性會造成常式錯誤。 例如,您可以對應要在 ListObject 中顯示的資料行,因此如果省略有限制條件的資料行 (例如無法接受 null 值的欄位),在建立資料行時就會引發錯誤。 您可以撰寫程式碼,在 ErrorAddDataBoundRow 事件的事件處理常式中加入遺失的值。
在 Excel 中重新命名 ListObject 控制項
Excel 可讓使用者使用 [設計] 索引標籤,變更 Excel 表格在執行階段的名稱。 但是,ListObject 控制項並不支援這項功能。 如果使用者嘗試重新命名對應於 ListObject 的 Excel 表格,該 Excel 表格的名稱就會自動還原成活頁簿儲存時使用的原始名稱。
事件
下列事件適用於 ListObject 控制項:
請參閱
工作
HOW TO:將新資料列加入 ListObject 控制項時驗證資料
概念
在應用程式層級增益集的執行階段中擴充 Word 文件和 Excel 活頁簿