如何:使用宿主控件中的数据更新数据源
更新: 2008 年 7 月
适用于 |
---|
本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。 文档级项目
应用程序级项目
有关更多信息,请参见按应用程序和项目类型提供的功能。 |
可以将宿主控件绑定到数据源,然后使用在此控件中对数据所做的更改来更新该数据源。
从 Visual Studio 2008 Service Pack 1 (SP1) 开始,可以在应用程序级项目中将宿主控件绑定到数据。如果没有安装 SP1,则只能在文档级项目中使用宿主控件。
此过程主要包括以下两个步骤:
使用控件中的已修改数据更新内存中数据源。通常,内存中数据源是一个 DataSet、DataTable 或某个其他数据对象。
使用内存中数据源中的已更改数据更新数据库。此步骤仅适用于数据源连接到后端数据库(例如 SQL Server 或 Microsoft Office Access 数据库)的情况。
有关宿主控件和数据绑定的更多信息,请参见宿主项和宿主控件概述和将数据绑定到控件。
更新内存中数据源
默认情况下,支持简单数据绑定的宿主控件(例如 Word 文档中的内容控件或 Excel 工作表中的命名范围控件)不将数据更改保存到内存中数据源。也就是说,如果最终用户更改宿主控件中的某个值后离开此控件,则该控件中的这个新值并不自动保存到数据源中。
若要将数据保存到数据源,可以编写代码来更新数据源以响应运行时的某个特定事件,或者可以将控件配置为当控件中的值更改时自动更新数据源。
无需将 ListObject 更改保存到内存中数据源。如果将 ListObject 控件绑定到数据,则 ListObject 控件会自动将更改保存到内存中数据源,而无需借助其他代码。
在运行时更新内存中数据源
调用将控件绑定到数据源的 Binding 对象的 WriteValue 方法。
下面的示例将在 Excel 工作表中对 NamedRange 控件所做的更改保存到数据源。此示例假定您有一个名为 namedRange1 的 NamedRange 控件,其 Value2 属性已绑定到数据源中的一个字段。
Me.NamedRange1.DataBindings("Value2").WriteValue()
this.namedRange1.DataBindings["Value2"].WriteValue();
自动更新内存中数据源
也可以配置控件,使其自动更新内存中数据源。在文档级项目中,可以通过使用代码或设计器来实现,而在应用程序级项目中,则必须使用代码来实现。
通过使用代码将控件设置为自动更新内存中数据源
使用将控件绑定到数据源的 Binding 对象的 DataSourceUpdateMode 属性。有两个选项可用于更新数据源:
若要在验证控件时更新数据源,请将此属性设置为 OnValidation。
若要在控件的数据绑定属性值更改时更新数据源,请将此属性设置为 OnPropertyChanged。
说明: 由于 Word 不提供文档更改或控件更改通知,因此 OnPropertyChanged 选项不适用于 Word 宿主控件,但该选项可用于 Word 文档中的 Windows 窗体控件。
下面的示例将 NamedRange 控件配置为当该控件中的值更改时自动更新数据源。此示例假定您有一个名为 namedRange1 的 NamedRange 控件,其 Value2 属性已绑定到数据源中的一个字段。
Me.NamedRange1.DataBindings("Value2").DataSourceUpdateMode = _ DataSourceUpdateMode.OnPropertyChanged
this.namedRange1.DataBindings["Value2"].DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
通过使用设计器将控件设置为自动更新内存中数据源
在 Visual Studio 的设计器中,打开 Word 文档或 Excel 工作簿。
单击希望其自动更新数据源的控件。
在“属性”窗口中,展开“(DataBindings)”属性。
在“(Advanced)”属性旁边,单击省略号按钮 ()。
在“格式设置和高级绑定”对话框中,单击“数据源更新模式”下拉列表并选择以下值之一:
若要在验证控件时更新数据源,请选择“OnValidation”。
若要在控件的数据绑定属性值更改时更新数据源,请选择“OnPropertyChanged”。
说明: 由于 Word 不提供文档更改或控件更改通知,因此“OnPropertyChanged”选项不适用于 Word 宿主控件,但该选项可用于 Word 文档中的 Windows 窗体控件。
关闭“格式设置和高级绑定”对话框。
更新数据库
如果内存中数据源与某个数据库关联,则必须使用对该数据源所做的更改来更新此数据库。有关更新数据库的更多信息,请参见保存数据概述和如何:使用 TableAdapter 更新数据。
更新数据库
调用控件的 BindingSource 的 EndEdit 方法。
在设计时将数据绑定控件添加到文档或工作簿时,会自动生成 BindingSource,BindingSource 将该控件连接到项目中的类型化数据集。有关更多信息,请参见 BindingSource 组件概述。
下面的代码示例假定您的项目包含一个名为 customersBindingSource 的 BindingSource。
Me.CustomersBindingSource.EndEdit()
this.customersBindingSource.EndEdit();
调用在项目中生成的 TableAdapter 的 Update 方法。
在设计时将数据绑定控件添加到文档或工作簿时,会自动生成 TableAdapter,TableAdapter 将项目中的类型化数据集连接到数据库。有关更多信息,请参见 TableAdapter 概述。
下面的代码示例假定您具有与 Northwind 数据库中的 Customers 表的连接,并且您的项目包含一个名为 customersTableAdapter 的 TableAdapter 和一个名为 northwindDataSet 的类型化数据集。
Me.CustomersTableAdapter.Update(Me.NorthwindDataSet.Customers)
this.customersTableAdapter.Update(this.northwindDataSet.Customers);
请参见
任务
概念
修订记录
日期 |
修订历史记录 |
原因 |
---|---|---|
2008 年 7 月 |
增加了有关在应用程序级外接程序中绑定数据的信息。 |
SP1 功能更改。 |