使用主机控件中的数据更新数据源
可以将宿主控件绑定到数据源,然后使用在此控件中对数据所做的更改来更新该数据源。 此过程包括以下两个主要步骤:
使用控件中的已修改数据更新内存中数据源。 通常情况下,内存中数据源是一个 DataSet、 DataTable或某个其他数据对象。
使用内存中数据源中的已更改数据更新数据库。 此步骤仅适用于数据源连接到后端数据库(例如 SQL Server 或 Microsoft Office Access 数据库)的情况。
有关主机控件和数据绑定的详细信息,请参阅主机项和数据绑定概述,并将数据绑定到办公室解决方案中的控件。
适用于: 本主题中的信息适用于 Excel 和 Word 的文档级项目和 VSTO 外接程序项目。 有关详细信息,请参阅办公室应用程序和项目类型提供的功能。
更新内存中数据源
默认情况下,支持简单数据绑定的宿主控件(例如 Word 文档中的内容控件或 Excel 工作表中的命名范围控件)不将数据更改保存到内存中数据源。 也就是说,如果最终用户更改宿主控件中的某个值后离开此控件,则该控件中的这个新值并不会自动保存到数据源中。
若要将数据保存到数据源,可以编写更新数据源的代码以响应运行时的某个特定事件,或者可以将控件配置为当控件中的值更改时自动更新数据源。
无需将 ListObject 更改保存到内存中数据源。 如果将 ListObject 控件绑定到数据,则 ListObject 控件会自动将更改保存到内存中数据源,而无需借助其他代码。
在运行时更新内存中数据源
调用将控件绑定到数据源的 WriteValue 对象的 Binding 方法。
下面的示例将在 Excel 工作表中对 NamedRange 控件所做的更改保存到数据源。 此示例假定你有一个名为 NamedRange 的
namedRange1
控件,且其 Value2 属性已绑定到数据源中的一个字段。
自动更新内存中数据源
你可也可以配置控件,使其自动更新内存中数据源。 在文档级项目中,可以通过使用代码或设计器来实现。 在 VSTO 外接程序项目中,必须使用代码。
通过使用代码将控件设置为自动更新内存中数据源
使用将控件绑定到数据源的对象的 Binding System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged 模式。 有两个选项可用于更新数据源:
若要在验证控件时更新数据源,请将此属性设置为 System.Windows.Forms.DataSourceUpdateMode.OnValidation。
若要在控件的数据绑定属性的值发生更改时更新数据源,请将此属性设置为 System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged。
注意
System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged 选项不适用于 Word 主机控件,因为 Word 不提供文档更改或控件更改通知。 但是,此选项可用于 Word 文档中的 Windows 窗体控件。
下面的示例将 NamedRange 控件配置为当该控件中的值更改时自动更新数据源。 此示例假定你有一个名为 NamedRange 的
namedRange1
控件,且其 Value2 属性已绑定到数据源中的一个字段。
通过使用设计器将控件设置为自动更新内存中数据源
在 Visual Studio 的设计器中,打开 Word 文档或 Excel 工作簿。
单击希望其自动更新数据源的控件。
在“属性” 窗口中,展开“(DataBindings)” 属性。
在“(Advanced)” 属性旁边,单击省略号按钮 ()。
在“格式设置和高级绑定” 对话框中,单击“数据源更新模式” 下拉列表并选择以下值之一:
若要在验证控件时更新数据源,请选择“OnValidation” 。
若要在控件的数据绑定属性值更改时更新数据源,请选择“OnPropertyChanged” 。
注意
因为 Word 不提供文档更改或控件更改通知,所以“OnPropertyChanged” 选项不适用于 Word 宿主控件。 但是,此选项可用于 Word 文档中的 Windows 窗体控件。
关闭“格式设置和高级绑定” 对话框。
更新数据库
如果内存中数据源与某个数据库关联,则必须使用对该数据源所做的更改来更新此数据库。 有关更新数据库的详细信息,请参阅使用 TableAdapter 将数据保存回数据库并更新数据。
更新数据库
调用控件的 EndEdit 的 BindingSource 方法。
在设计时将数据绑定控件添加到文档或工作簿时,会自动生成 BindingSource 。 BindingSource 将该控件连接到项目中的类型化数据集。 有关详细信息,请参阅 BindingSource 组件概述。
下面的代码示例假定你的项目包含一个名为 BindingSource 的
customersBindingSource
。在
Update
项目中调用生成的 TableAdapter 的方法。在设计时向文档或工作簿添加数据绑定控件时,自动生成 TableAdapter。 TableAdapter 将项目中的类型化数据集连接到数据库。 有关详细信息,请参阅 TableAdapter 概述。
下面的代码示例假定你已连接到 Northwind 数据库中的 Customers 表,并且项目包含名为 TableAdapter 的
customersTableAdapter
TableAdapter 和一个名为northwindDataSet
类型化的数据集。