如何:使用宿主控件中的数据更新数据源

更新: 2008 年 7 月

适用于

本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。

文档级项目

  • Excel 2003

  • Excel 2007

  • Word 2003

  • Word 2007

应用程序级项目

  • Excel 2007

  • Word 2007

有关更多信息,请参见按应用程序和项目类型提供的功能

可以将宿主控件绑定到数据源,然后使用在此控件中对数据所做的更改来更新该数据源。

从 Visual Studio 2008 Service Pack 1 (SP1) 开始,可以在应用程序级项目中将宿主控件绑定到数据。如果没有安装 SP1,则只能在文档级项目中使用宿主控件。

此过程主要包括以下两个步骤:

  1. 使用控件中的已修改数据更新内存中数据源。通常,内存中数据源是一个 DataSetDataTable 或某个其他数据对象。

  2. 使用内存中数据源中的已更改数据更新数据库。此步骤仅适用于数据源连接到后端数据库(例如 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

      bybtbt99.alert_note(zh-cn,VS.90).gif说明:

      由于 Word 不提供文档更改或控件更改通知,因此 OnPropertyChanged 选项不适用于 Word 宿主控件,但该选项可用于 Word 文档中的 Windows 窗体控件。

    下面的示例将 NamedRange 控件配置为当该控件中的值更改时自动更新数据源。此示例假定您有一个名为 namedRange1 的 NamedRange 控件,其 Value2 属性已绑定到数据源中的一个字段。

    Me.NamedRange1.DataBindings("Value2").DataSourceUpdateMode = _
        DataSourceUpdateMode.OnPropertyChanged
    
    this.namedRange1.DataBindings["Value2"].DataSourceUpdateMode = 
        DataSourceUpdateMode.OnPropertyChanged;
    

通过使用设计器将控件设置为自动更新内存中数据源

  1. 在 Visual Studio 的设计器中,打开 Word 文档或 Excel 工作簿。

  2. 单击希望其自动更新数据源的控件。

  3. 在“属性”窗口中,展开“(DataBindings)”属性。

  4. 在“(Advanced)”属性旁边,单击省略号按钮 (VisualStudioEllipsesButton 屏幕快照)。

  5. 在“格式设置和高级绑定”对话框中,单击“数据源更新模式”下拉列表并选择以下值之一:

    • 若要在验证控件时更新数据源,请选择“OnValidation”。

    • 若要在控件的数据绑定属性值更改时更新数据源,请选择“OnPropertyChanged”。

      bybtbt99.alert_note(zh-cn,VS.90).gif说明:

      由于 Word 不提供文档更改或控件更改通知,因此“OnPropertyChanged”选项不适用于 Word 宿主控件,但该选项可用于 Word 文档中的 Windows 窗体控件。

  6. 关闭“格式设置和高级绑定”对话框。

更新数据库

如果内存中数据源与某个数据库关联,则必须使用对该数据源所做的更改来更新此数据库。有关更新数据库的更多信息,请参见保存数据概述如何:使用 TableAdapter 更新数据

更新数据库

  1. 调用控件的 BindingSourceEndEdit 方法。

    在设计时将数据绑定控件添加到文档或工作簿时,会自动生成 BindingSourceBindingSource 将该控件连接到项目中的类型化数据集。有关更多信息,请参见 BindingSource 组件概述

    下面的代码示例假定您的项目包含一个名为 customersBindingSource 的 BindingSource

    Me.CustomersBindingSource.EndEdit()
    
    this.customersBindingSource.EndEdit();
    
  2. 调用在项目中生成的 TableAdapter 的 Update 方法。

    在设计时将数据绑定控件添加到文档或工作簿时,会自动生成 TableAdapterTableAdapter 将项目中的类型化数据集连接到数据库。有关更多信息,请参见 TableAdapter 概述

    下面的代码示例假定您具有与 Northwind 数据库中的 Customers 表的连接,并且您的项目包含一个名为 customersTableAdapter 的 TableAdapter 和一个名为 northwindDataSet 的类型化数据集。

    Me.CustomersTableAdapter.Update(Me.NorthwindDataSet.Customers)
    
    this.customersTableAdapter.Update(this.northwindDataSet.Customers);
    

请参见

任务

如何:使用 TableAdapter 更新数据

如何:在工作表中滚动查看数据库记录

如何:用数据库中的数据填充工作表

如何:用对象中的数据填充文档

如何:用数据库中的数据填充文档

如何:用服务中的数据填充文档

概念

将数据绑定到控件

保存数据概述

修订记录

日期

修订历史记录

原因

2008 年 7 月

增加了有关在应用程序级外接程序中绑定数据的信息。

SP1 功能更改。