Events
May 19, 6 PM - May 23, 12 AM
Calling all developers, creators, and AI innovators to join us in Seattle @Microsoft Build May 19-22.
Register todayThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Important
The Actions feature has been retired in Office 2024.
This feature is only available in the following releases of Office:
This walkthrough demonstrates data binding to controls on an actions pane in Word. The controls demonstrate a master/detail relation between tables in a SQL Server database.
Applies to: The information in this topic applies to document-level projects for Word. For more information, see Features available by Office application and project type.
This walkthrough illustrates the following tasks:
Creating an actions pane with Windows Forms controls that are bound to data.
Using a master/detail relationship to display data in the controls.
Show the actions pane when the application opens.
Note
Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. The Visual Studio edition that you have and the settings that you use determine these elements. For more information, see Personalize the Visual Studio IDE.
You need the following components to complete this walkthrough:
An edition of Visual Studio that includes the Microsoft Office developer tools. For more information, see Configure a computer to develop Office solutions.
Word 2013 or Word 2010 .
Access to a server with the Northwind SQL Server sample database.
Permissions to read from and write to the SQL Server database.
The first step is to create a Word Document project.
Create a Word Document project with the name My Word Actions Pane. In the wizard, select Create a new document.
For more information, see How to: Create Office projects in Visual Studio.
Visual Studio opens the new Word document in the designer and adds the My Word Actions Pane project to Solution Explorer.
For this walkthrough, you need an actions pane control that contains data-bound Windows Forms controls. Add a data source to the project, and then drag controls from the Data Sources window to the actions pane control.
Select the My Word Actions Pane project in Solution Explorer.
On the Project menu, click Add New Item.
In the Add New Item dialog box, select Actions Pane Control, name it ActionsControl, and then click Add.
If the Data Sources window is not visible, display it by, on the menu bar, choosing View > Other Windows > Data Sources.
Note
If Show Data Sources is not available, click the Word document and then check again.
Click Add New Data Source to start the Data Source Configuration Wizard.
Select Database and then click Next.
Select a data connection to the Northwind sample SQL Server database, or add a new connection by using the New Connection button.
Click Next.
Clear the option to save the connection if it is selected, and then click Next.
Expand the Tables node in the Database objects window.
Select the check box next to the Suppliers and Products tables.
Click Finish.
The wizard adds the Suppliers table and Products table to the Data Sources window. It also adds a typed dataset to your project that is visible in Solution Explorer.
In the Data Sources window, expand the Suppliers table.
Click the drop-down arrow on the Company Name node, and select ComboBox.
Drag CompanyName from the Data Sources window to the actions pane control.
A ComboBox control is created on the actions pane control. At the same time, a BindingSource named SuppliersBindingSource
, a table adapter, and a DataSet are added to the project in the component tray.
Select SuppliersBindingNavigator
in the Component tray and press Delete. You will not use the SuppliersBindingNavigator
in this walkthrough.
Note
Deleting the SuppliersBindingNavigator
does not remove all of the code that was generated for it. You can remove this code.
Move the combo box so that it is under the label and change the Size property to 171, 21.
In the Data Sources window, expand the Products table that is a child of the Suppliers table.
Click the drop-down arrow on the ProductName node, and select ListBox.
Drag ProductName to the actions pane control.
A ListBox control is created on the actions pane control. At the same time, a BindingSource named ProductBindingSource
and a table adapter are added to the project in the component tray.
Move the list box so that it is under the label and change the Size property to 171,95.
Drag a Button from the Toolbox onto the actions pane control and place it below the list box.
Right-click the Button, click Properties on the shortcut menu, and change the following properties.
Property | Value |
---|---|
Name | Insert |
Text | Insert |
Resize the user control to fit the controls.
To set up the data source, add code to the Load event of the actions pane control to fill the control with data from the DataTable, and set the DataSource and DataMember properties for each control.
In the Load event handler of the ActionsControl
class, add the following code.
In C#, you must attach the event handler to the Load event. You can place this code in the ActionsControl
constructor, after the call to InitializeComponent
. For more information about how to create event handlers, see How to: Create event handlers in Office projects.
this.Load += new EventHandler(ActionsControl_Load);
Select the CompanyNameComboBox
control.
In the Properties window, click the button to the right of the DataSource property, and select suppliersBindingSource.
Click the button to the right of the DisplayMember property, and select CompanyName.
Expand the DataBindings property, click the button to the right of the Text property, and select None.
Select the ProductNameListBox
control.
In the Properties window, click the button to the right of the DataSource property, and select productsBindingSource.
Click the button to the right of the DisplayMember property, and select ProductName.
Expand the DataBindings property, click the button to the right of the SelectedValue property, and select None.
The next task is to read the data from the bound controls and populate a table in your Word document. First, create a procedure for formatting the headings in the table, and then add the AddData
method to create and format a Word table.
In the ActionsControl
class, create a method to format the headings of the table.
In the ActionsControl
class, write a method that will create a table if one does not already exist, and add data from the actions pane to the table.
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);
}
}
Add the following code to the Click event handler of the Insert button.
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);
}
}
In C#, you must create an event handler for the Click event of the button. You can place this code in the Load event handler of the ActionsControl
class.
this.Insert.Click += new EventHandler(Insert_Click);
The actions pane becomes visible after controls are added to it.
In Solution Explorer, right-click ThisDocument.vb or ThisDocument.cs, and then click View Code on the shortcut menu.
Create a new instance of the control at the top of the ThisDocument
class so that it looks like the following example.
Add code to the Startup event handler of ThisDocument
so that it looks like the following example.
Now you can test your document to verify that the actions pane appears when the document is opened. Test for the master/detail relationship in the controls on the actions pane, and make sure that data is populated in a Word table when the Insert button is clicked.
Press F5 to run your project.
Confirm that the actions pane is visible.
Select a company in the combo box and verify that the items in the Products list box change.
Select a product, click Insert on the actions pane, and verify that the product details are added to the table in Word.
Insert additional products from various companies.
This walkthrough shows the basics of binding data to controls on an actions pane in Word. Here are some tasks that might come next:
Binding data to controls in Excel. For more information, see Walkthrough: Bind data to controls on an Excel actions pane.
Deploying the project. For more information, see Deploy an Office solution by using ClickOnce.
Events
May 19, 6 PM - May 23, 12 AM
Calling all developers, creators, and AI innovators to join us in Seattle @Microsoft Build May 19-22.
Register todayTraining
Learning path
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Certification
Microsoft Office Specialist: Word Associate (Microsoft 365 Apps) - Certifications
Demonstrate that you have the skills needed to get the most out of Word (Microsoft 365 Apps) by earning a Microsoft Office Specialist (MOS) certification.