逐步解說:將數據系結至 Word 動作窗格上的控件
本逐步解說示範 Word 中動作窗格上控件的數據系結。 這些控制項會顯示 SQL Server 資料庫中資料表之間的主要/詳細資料關聯。
適用於: 本主題中的資訊適用於 Word 的檔案層級專案。 如需詳細資訊,請參閱 Office 應用程式 lication 和項目類型所提供的功能。
本逐步解說將說明下列工作:
使用系結至數據的 Windows Forms 控件建立執行窗格。
使用主要/詳細數據關聯性在控件中顯示數據。
當應用程式開啟時,顯示 [動作] 窗格。
注意
在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置: 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱將 Visual Studio IDE 個人化。
必要條件
您需要下列元件才能完成這個逐步解說:
此版 Visual Studio 包含 Microsoft Office Developer Tools。 如需詳細資訊,請參閱 設定計算機來開發 Office 解決方案。
Word 2013 或 Word 2010 。
使用 Northwind SQL Server 範例數據庫存取伺服器。
讀取和寫入 SQL Server 資料庫的許可權。
建立專案
第一個步驟是建立 Windows 文件專案。
建立新的專案
建立名稱 為 [我的 Word 動作窗格] 的 Word 檔案專案。 在精靈中,選取 [ 建立新檔]。
如需詳細資訊,請參閱 如何:在Visual Studio中建立 Office專案。
Visual Studio 會在設計工具中開啟新的 Word 檔,並將 [我的 Word 動作窗格] 專案新增至 方案總管。
將控件新增至執行窗格
在本逐步解說中,您需要包含數據系結 Windows Forms 控件的動作窗格控制件。 將數據源新增至專案,然後將控件從 [數據源 ] 視窗拖曳至 [動作] 窗格控件。
若要新增執行窗格控件
在 方案總管 中選取 [我的 Word 動作窗格] 專案。
在 [專案] 功能表上,按一下 [加入新項目]。
在 [ 新增專案 ] 對話框中,選取 [ 動作窗格控件],將它命名為 ActionsControl,然後按兩下 [ 新增]。
將數據源新增至專案
如果看不到 [數據源] 視窗,請在功能表欄上選擇 [檢視>其他 Windows>數據源] 來顯示它。
注意
如果 [顯示數據源 ] 無法使用,請按兩下 Word 檔,然後再檢查一次。
按兩下 [新增資料源 ] 以啟動 [資料源設定精靈]。
選取 [ 資料庫 ],然後按 [下一步]。
選取 Northwind 範例 SQL Server 資料庫的數據連線,或使用 [新增 連線 ion] 按鈕新增連線。
按一下 [下一步] 。
清除選取連線時儲存連線的選項,然後按 [ 下一步] 。
展開 [資料庫物件] 視窗中的 [數據表] 節點。
選取 [供應商和產品] 資料表旁的複選框。
按一下完成。
精靈會將 供應商 數據表和 Products 資料表新增至 [資料源] 視窗。 它也會將具型別數據集新增至專案中,方案總管 中可見。
若要將數據系結的 Windows Forms 控件新增至執行窗格控件
在 [ 數據源] 視窗中,展開 [供貨商 ] 數據表。
按兩下 [公司名稱] 節點上的下拉式箭號,然後選取 [ComboBox]。
將 CompanyName 從 [資料源] 視窗拖曳至 [動作] 窗格控制件。
控制件 ComboBox 會在執行窗格控制件上建立。 同時,名為
SuppliersBindingSource
的 BindingSource 、數據表配接器,以及 DataSet 會新增至元件匣中的專案。在 [元件匣] 中選取
SuppliersBindingNavigator
,然後按 [刪除]。 在本逐步解說中,您將不會使用SuppliersBindingNavigator
。注意
SuppliersBindingNavigator
刪除並不會移除為其產生的所有程序代碼。 您可以移除此程式碼。移動下拉式方塊,使其位於標籤底下,並將 Size 屬性變更為 171,21。
在 [數據源] 視窗中,展開 [Products] 數據表,這是供應商數據表的子系。
單擊 ProductName 節點上的下拉式箭號,然後選取 [ListBox]。
將 ProductName 拖曳至執行窗格控件。
控制件 ListBox 會在執行窗格控制件上建立。 同時, BindingSource 具名
ProductBindingSource
和數據表配接器會新增至元件匣中的專案。移動清單框,使其位於標籤底下,並將 Size 屬性變更為 171,95。
Button將 從 [工具箱] 拖曳到執行窗格控件,並將它放在清單框下方。
以滑鼠右鍵按兩下 Button,按下 捷徑選單上的 [屬性 ],然後變更下列屬性。
屬性 值 名稱 插入 Text 插入 調整使用者控制元件的大小以符合控制件。
設定數據源
若要設定數據源,請將程式代碼新增至 Load 執行窗格控件的事件,以填入控件 DataTable中的數據,並設定每個控件的 DataSource 和 DataMember 屬性。
使用數據載入控制件
在 Load 類別的事件處理程式中
ActionsControl
,新增下列程序代碼。在 C# 中,您必須將事件處理程式附加至 Load 事件。 您可以在呼叫
InitializeComponent
之後,將此ActionsControl
程式代碼放在建構函式中。 如需如何建立事件處理程式的詳細資訊,請參閱 如何:在 Office 專案中建立事件處理程式。this.Load += new EventHandler(ActionsControl_Load);
設定控件的數據系結屬性
選取
CompanyNameComboBox
控制項。在 [屬性] 視窗中,按兩下 DataSource 屬性右邊的按鈕,然後選取 suppliersBindingSource。
按兩下 DisplayMember 屬性右邊的按鈕,然後選取 [CompanyName]。
展開 DataBindings 屬性,按下 Text 屬性右邊的按鈕,然後選取 [無]。
選取
ProductNameListBox
控制項。在 [屬性] 視窗中,按兩下 DataSource 屬性右邊的按鈕,然後選取 productsBindingSource。
按兩下 DisplayMember 屬性右邊的按鈕,然後選取 [ProductName]。
展開 DataBindings 屬性,按下 SelectedValue 屬性右邊的按鈕,然後選取 [無]。
新增方法以將數據插入數據表
下一項工作是從綁定控件讀取數據,並在 Word 檔中填入數據表。 首先,建立程式來格式化表格中的標題,然後新增 AddData
方法來建立及格式化 Word 表格。
格式化表格標題
在類別中
ActionsControl
,建立方法以格式化數據表的標題。
若要建立數據表
在類別中
ActionsControl
,撰寫方法,如果數據表不存在,則會建立數據表,並將動作窗格中的數據新增至數據表。private void AddData(System.Data.DataRow row, string companyName) { object missing = System.Type.Missing; // Create a table if it doesn't already exist. if (Globals.ThisDocument.Tables.Count == 0) { try { // Create a table. Microsoft.Office.Interop.Word.Table tbl = Globals.ThisDocument.Tables.Add (Globals.ThisDocument.Application.Selection.Range, 1, 4, ref missing, ref missing); // Insert headings. SetHeadings(tbl.Cell(1, 1), "Company Name"); SetHeadings(tbl.Cell(1, 2), "Product Name"); SetHeadings(tbl.Cell(1, 3), "Quantity"); SetHeadings(tbl.Cell(1, 4), "Unit Price"); } catch (Exception ex) { MessageBox.Show("Problem creating Products table: " + ex.Message, "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error); } } // Add data from data row to the table. Microsoft.Office.Interop.Word.Selection selection = Globals.ThisDocument.Application.Selection; if (selection.Tables.Count > 0) { Microsoft.Office.Interop.Word.Row newRow = Globals.ThisDocument.Tables[1].Rows.Add(ref missing); newRow.Range.Font.Bold = 0; newRow.Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft; newRow.Cells[4].Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight; newRow.Cells[1].Range.Text = companyName; newRow.Cells[2].Range.Text = row["ProductName"].ToString(); newRow.Cells[3].Range.Text = row["QuantityPerUnit"].ToString(); newRow.Cells[4].Range.Text = Math.Round(Convert.ToDouble(row["UnitPrice"])).ToString("#,##0.00"); } else { MessageBox.Show("Cursor must be within a table.", "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
將文字插入 Word 資料表
將下列程式代碼新增至 Click [插入] 按鈕的事件處理程式。
private void Insert_Click(object sender, System.EventArgs e) { System.Data.DataTable tbl = northwindDataSet.Products; System.Data.DataRow[] rows; // Check if a product is selected. if (this.productNameListBox.SelectedIndex >= 0) { System.Data.DataRowView productRow = (System.Data.DataRowView)this.productNameListBox.SelectedItem; string product = productRow.Row["ProductName"].ToString(); string company = this.companyNameComboBox.Text; // Return the data row from the selected product. rows = tbl.Select("[ProductName] = '" + product.Replace("'", "''") + "'"); this.AddData(rows[0], company); } else { MessageBox.Show("Please select a product.", "Actions Pane", MessageBoxButtons.OK); } }
在 C# 中,您必須為 Click 按鈕的事件建立事件處理程式。 您可以將此程式代碼放在 Load 類別的事件處理程式中
ActionsControl
。this.Insert.Click += new EventHandler(Insert_Click);
顯示執行窗格
將控件加入其中之後,動作窗格就會變成可見。
顯示執行窗格
在 方案總管 中,以滑鼠右鍵按兩下 ThisDocument.vb 或 ThisDocument.cs,然後按下快捷方式選單上的 [檢視程式代碼]。
在 類別頂端
ThisDocument
建立 控件的新實例,使其看起來像下列範例。將程式代碼新增至 的 Startup 事件處理程式
ThisDocument
,使其看起來像下列範例。
測試應用程式
現在,您可以測試您的文件,確認開啟檔時會出現執行窗格。 在動作窗格的控件中測試主要/詳細數據關聯性,並確定按兩下 [插入] 按鈕時,會在 Word 資料表中填入數據。
測試文件
按 F5 執行您的專案。
確認 [動作] 窗格可見。
在下拉式方塊中選取公司,並確認 [ 產品 ] 清單框中的項目變更。
選取產品,按兩下 [動作] 窗格上的 [ 插入 ],並確認產品詳細數據已新增至 Word 中的數據表。
插入來自各種公司的其他產品。
下一步
本逐步解說說明將數據系結至 Word 中動作窗格上控件的基本概念。 接著可以執行下列一些工作:
將數據系結至 Excel 中的控制件。 如需詳細資訊,請參閱 逐步解說:將數據系結至Excel動作窗格上的控制件。
部署專案。 如需詳細資訊,請參閱 使用 ClickOnce 部署 Office 解決方案。