Share via


逐步解說:應用程式層級專案中的複雜資料繫結

您可以將資料繫結至應用程式層級專案中的主控制項和 Windows Form 控制項。 本逐步解說示範如何在執行階段將控制項加入至 Microsoft Office Excel 工作表,以及將控制項繫結至資料。

**適用於:**本主題中的資訊適用於 Excel 2007 和 Excel 2010 的應用程式層級專案。如需詳細資訊,請參閱依 Office 應用程式和專案類型提供的功能

這個逐步解說將說明下列工作:

  • 在執行階段將 ListObject 控制項加入至工作表。

  • 建立可將控制項連接至資料集執行個體的 BindingSource

注意事項注意事項

您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱 Visual Studio 設定

必要條件

您需要下列元件才能完成此逐步解說:

-

包含 Microsoft Office 開發者工具的 Visual Studio 2010 版本。 如需詳細資訊,請參閱[設定電腦以開發 Office 方案](bb398242\(v=vs.100\).md)。

建立新專案

第一步是建立 Excel 增益集專案。

若要建立新的專案

  • 使用 Visual Basic 或 C#,建立名為從資料庫填入工作表的 Excel 增益集專案。

    如需詳細資訊,請參閱 HOW TO:在 Visual Studio 中建立 Office 專案

    Visual Studio 隨即開啟 ThisAddIn.vb 或 ThisAddIn.cs 檔案,並將 [從資料庫填入工作表] 專案加入至 [方案總管]。

建立資料來源

請使用 [資料來源] 視窗,將具型別資料集加入您的專案。

若要將具型別資料集加入至專案

  1. 在 [資料] 功能表上,請按一下 [加入新資料來源]。

    [資料來源組態精靈] 隨即開啟。

  2. 按一下 [資料庫],然後按 [下一步]。

  3. 如果已經有現有的 AdventureWorksLT 資料庫連接,請選擇此連接,再按 [下一步]。

    否則,請按一下 [新增連接],並使用 [加入連接] 對話方塊建立新連接。 如需詳細資訊,請參閱 HOW TO:連接至資料庫中的資料

  4. 在 [將連接字串儲存到應用程式組態檔] 頁面上,按 [下一步]。

  5. 在 [選擇您的資料庫物件] 頁面中,展開 [資料表],並選取 [地址 (SalesLT)]。

  6. 按一下 [完成]。

    AdventureWorksLTDataSet.xsd 檔案隨即加入至 [方案總管]。 這個檔案定義下列項目:

    • 名稱為 AdventureWorksLTDataSet 的具型別資料集。 這個資料集表示 AdventureWorksLT 資料庫中 地址 (SalesLT) 資料表的內容。

    • 名為 AddressTableAdapter 的 TableAdapter。 這個 TableAdapter 可以用來讀取和寫入 AdventureWorksLTDataSet 中的資料。 如需詳細資訊,請參閱 TableAdapter 概觀

    在這個逐步解說後面的步驟中,您會用到這兩個物件。

建立控制項並將控制項繫結至資料

在這個逐步解說中,只要使用者一開啟活頁簿,ListObject 控制項便會顯示所選取資料表中的所有資料。 這個清單物件會使用 BindingSource,將控制項連接至資料庫。

如需將控制項繫結至資料的詳細資訊,請參閱將資料繫結至 Office 方案中的控制項

若要加入清單物件、資料集和資料表配接器

  1. 在 ThisAddIn 類別中,宣告下列可顯示 AdventureWorksLTDataSet 資料集之 Address 資料表的控制項。

    Private addressListObject As Microsoft.Office.Tools.Excel.ListObject
    Private adventureWorksDataSet As AdventureWorksLTDataSet
    Private addressTableAdapter As AdventureWorksLTDataSetTableAdapters.AddressTableAdapter
    Private addressBindingSource As System.Windows.Forms.BindingSource
    
    private Microsoft.Office.Tools.Excel.ListObject addressListObject;
    private AdventureWorksLTDataSet adventureWorksDataSet;
    private AdventureWorksLTDataSetTableAdapters.AddressTableAdapter addressTableAdapter;
    private System.Windows.Forms.BindingSource addressBindingSource;
    
  2. 在 ThisAddIn_Startup 方法中,將下列程式碼加入以初始化資料集,並以 AdventureWorksLTDataSet 資料集的資訊填入該資料集。

    Me.addressTableAdapter = New AdventureWorksLTDataSetTableAdapters.AddressTableAdapter()
    Me.adventureWorksDataSet = New AdventureWorksLTDataSet()
    Me.addressTableAdapter.Fill(Me.adventureWorksDataSet.Address)
    Me.addressBindingSource = New System.Windows.Forms.BindingSource()
    
    this.addressTableAdapter = new AdventureWorksLTDataSetTableAdapters.AddressTableAdapter();
    this.adventureWorksDataSet = new AdventureWorksLTDataSet();
    this.addressTableAdapter.Fill(this.adventureWorksDataSet.Address);
    this.addressBindingSource = new System.Windows.Forms.BindingSource();
    
  3. 將以下程式碼加入至 ThisAddIn_Startup 方法中。 這會產生可擴充工作表的主項目。 如需詳細資訊,請參閱在應用程式層級增益集的執行階段中擴充 Word 文件和 Excel 活頁簿

    注意事項注意事項

    下列範例會在以 .NET Framework 4 為目標的專案中運作。 若要在以 .NET Framework 3.5 為目標的專案中使用這則範例,請參閱程式碼中的註解。

    Dim worksheet As Excel.Worksheet = DirectCast(Me.Application.ActiveWorkbook.Worksheets(1), Excel.Worksheet)
    
    ' Create a workhseet host item for .NET Framework 4 projects.
    Dim extendedWorksheet As Worksheet = Globals.Factory.GetVstoObject(worksheet)
    
    ' For .NET Framework 3.5 projects, use the following code to create a worksheet host item.
    ' Dim extendedWorksheet As Worksheet = worksheet.GetVstoObject()
    
    Excel.Worksheet worksheet = (Excel.Worksheet)this.Application.ActiveWorkbook.Worksheets[1];
    // Create a workhseet host item for .NET Framework 4 projects.
    Worksheet extendedWorksheet = Globals.Factory.GetVstoObject(worksheet);
    
    // For .NET Framework 3.5 projects, use the following code to create a worksheet host item.
    // Worksheet extendedWorksheet = worksheet.GetVstoObject();
    
  4. 建立範圍並加入 ListObject 控制項。

    Dim cell As Excel.Range = extendedWorksheet.Range("$A$1:$G$5", System.Type.Missing)
    Me.addressListObject = extendedWorksheet.Controls.AddListObject(cell, "list1")
    
    Excel.Range cell = extendedWorksheet.Range["$A$1:$G$5", System.Type.Missing];
    this.addressListObject = extendedWorksheet.Controls.AddListObject(cell, "list1");
    
  5. 使用 BindingSource,將清單物件繫結至 AdventureWorksLTDataSet。 傳入要繫結至清單物件之資料行的名稱。

    Me.addressBindingSource.DataSource = Me.adventureWorksDataSet.Address
    Me.addressListObject.AutoSetDataBoundColumnHeaders = True
    Me.addressListObject.SetDataBinding( _
        Me.addressBindingSource, "", "AddressID", "AddressLine1", _
        "AddressLine2", "City", "StateProvince", "CountryRegion", "PostalCode")
    
    this.addressBindingSource.DataSource = this.adventureWorksDataSet.Address;
    this.addressListObject.AutoSetDataBoundColumnHeaders = true;
    this.addressListObject.SetDataBinding(
        this.addressBindingSource, "", "AddressID", "AddressLine1", 
        "AddressLine2", "City", "StateProvince", "CountryRegion", "PostalCode");
    

測試增益集

當您開啟 Excel 時,ListObject 控制項會顯示 AdventureWorksLTDataSet 資料集之 Address 資料表中的資料。

若要測試增益集

  • 請按 F5

    工作表中便會建立名為 addressListObject 的 ListObject 控制項。 同時,也會將名為 adventureWorksLTDataSet 的資料集物件和名為 addressBindingSource 的 BindingSource 加入至專案。 ListObject 會繫結至 BindingSource,而後者則繫結至資料集物件。

請參閱

工作

HOW TO:將資料庫的資料填入工作表

HOW TO:將資料庫的資料填入文件

HOW TO:將服務的資料填入文件

HOW TO:將物件的資料填入文件

HOW TO:在工作表中捲動資料庫記錄

HOW TO:從主控制項中使用資料更新資料來源

逐步解說:文件層級專案中的簡單資料繫結

逐步解說:文件層級專案中的複雜資料繫結

參考

BindingSource 元件概觀

概念

使用在 Office 方案概觀中的本機資料庫檔案

資料來源概觀

將 Windows Form 控制項繫結至 Visual Studio 中的資料

使用在 Office 方案概觀中的本機資料庫檔案

連接至 Windows Form 應用程式中的資料

其他資源

Office 方案的資料

將資料繫結至 Office 方案中的控制項