演练:使用缓存的数据集创建主/从关系

更新:2007 年 11 月

适用对象

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

项目类型

  • 文档级项目

Microsoft Office 版本

  • 2007 Microsoft Office system

  • Microsoft Office 2003

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

本演练演示如何在工作表上创建主/从关系,以及如何缓存数据,以使解决方案可以脱机使用。

通过此演练,您将学会如何执行以下任务:

  • 将控件添加到工作表中。

  • 设置要在工作表中缓存的数据集。

  • 添加用于滚动记录的代码。

  • 测试项目。

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

以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。您安装的 Visual Studio 版本以及使用的设置决定了这些元素。有关更多信息,请参见 Visual Studio 设置

先决条件

若要完成此演练,您需要:

  • Visual Studio Tools for Office(Visual Studio 2008 专业版 和 Visual Studio Team System 的可选组件)。

  • Microsoft Office Excel 2003 或 Microsoft Office Excel 2007。

  • 对 Northwind SQL Server 示例数据库的访问。数据库可位于开发计算机上或服务器上。

  • 从 SQL Server 数据库中读取数据和向其中写入数据的权限。

创建新项目

在此步骤中,您将创建一个 Excel 工作簿项目。

创建新项目

Visual Studio 在设计器中打开新的 Excel 工作簿,并将“My Master-Detail”项目添加到“解决方案资源管理器”中。

创建数据源

使用“数据源”窗口向您的项目中添加类型化数据集。

创建数据源

  1. 如果“数据源”窗口不可见,请单击“数据”菜单上的“显示数据源”。

  2. 单击“添加新数据源”以启动“数据源配置向导”。

  3. 选择“数据库”,然后单击“下一步”。

  4. 选择到 Northwind 示例 SQL Server 数据库的数据连接,或者使用“新建连接”按钮添加新连接。

  5. 选择或创建连接后,单击“下一步”。

  6. 如果选择了该选项,请将其清除以保存连接,然后单击“下一步”。

  7. 展开“数据库对象”窗口中的“表”节点。

  8. 选择“Orders”表,然后选择“Order Details”表。

  9. 单击“完成”。

向导将这两个表添加到“数据源”窗口中。还将一个类型化数据集添加到在“解决方案资源管理器”中可见的项目中。

将控件添加到工作表

在此步骤中,将在第一个工作表中添加一个命名范围、一个列表对象和两个按钮。首先,从“数据源”窗口添加命名范围和列表对象,从而使其自动绑定至数据源。然后,从“工具箱”添加按钮。

添加命名范围和列表对象

  1. 验证“My Master-Detail.xls”工作簿在 Visual Studio 设计器中是否已打开,并且其中是否显示“Sheet1”。

  2. 打开“数据源”窗口,然后展开“Orders”节点。

  3. 选择“OrderID”列,然后单击出现的下拉箭头。

  4. 单击下拉列表中的“NamedRange”,然后将“OrderID”列拖至单元格“A2”中。

    将在单元格“A2”中创建一个名为 OrderIDNamedRange 的 NamedRange 控件。同时,会将一个名为 OrdersBindingSource 的 BindingSource、一个表适配器和一个 DataSet 实例添加到该项目中。该控件绑定到 BindingSource,接着后者绑定到 DataSet 实例。

  5. 向下滚动通过“Orders”表下的列。该列表的底部是“Order Details”表;该表位于此处是因为它是“Orders”表的子表。选择这个“Order Details”表,而不是与“Orders”表处于同一层的某个表,然后单击出现的下拉箭头。

  6. 单击下拉列表中的“ListObject”,然后将“Order Details”表拖至单元格“A6”中。

  7. 将在单元格“A6”中创建一个名为“Order_DetailsListObject”的 ListObject 控件,并将其绑定到 BindingSource

添加两个按钮

  1. 从“工具箱”的“公共控件”选项卡向工作表的单元格“A3”中添加一个 Button 控件。

    此按钮被命名为 Button1。

  2. 将另一个 Button 控件添加到工作表的单元格“B3”中。

    此按钮被命名为 Button2。

接下来,标记将在文档中缓存的数据集。

缓存数据集

通过将数据集设置为 public 并设置“CacheInDocument”属性,可标记要在文档中缓存的数据集。

缓存数据集

  1. 在组件栏中选择“NorthwindDataSet”。

  2. 在“属性”窗口中,将“Modifiers”属性更改为“Public”。

    启用缓存之前,必须将数据集设置为 public。

  3. 将“CacheInDocument”属性更改为“True”。

下一步是向按钮中添加文本,并在 C# 中添加用于将事件处理程序挂钩的代码。

初始化控件

在处理 Startup 事件期间,设置按钮文本并添加事件处理程序。

初始化数据和控件

  1. 在“解决方案资源管理器”中右击“Sheet1.vb”或“Sheet1.cs”,再单击快捷菜单上的“查看代码”。

  2. 将以下代码添加到 Sheet1_Startup 方法中,以设置按钮文本。

    Me.Button1.Text = "<"
    Me.Button2.Text = ">"
    
    this.button1.Text = "<";
    this.button2.Text = ">";
    
  3. 仅对于 C#,向 Sheet1_Startup 方法添加用于处理按钮单击事件的事件处理程序。

    this.button1.Click += new EventHandler(button1_Click);
    this.button2.Click += new EventHandler(button2_Click);
    

添加用于滚动记录的代码

在每个按钮的 Click 事件处理程序中添加代码以在记录中移动。

滚动记录

  1. 为 Button1 的 Click 事件添加事件处理程序,并添加以下代码以在记录中向后移动:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles Button1.Click
    
        Me.OrdersBindingSource.MovePrevious()
    End Sub
    
    private void button1_Click(object sender, EventArgs e)
    {
        this.ordersBindingSource.MovePrevious();
    }
    
  2. 为 Button2 的 Click 事件添加事件处理程序,并添加以下代码以在记录中向前移动:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles Button2.Click
    
        Me.OrdersBindingSource.MoveNext()
    End Sub
    
    private void button2_Click(object sender, EventArgs e)
    {
        this.ordersBindingSource.MoveNext();
    }
    

测试应用程序

现在您可以测试工作簿,以确保数据按预期效果显示,并且可以脱机使用该解决方案。

测试数据缓存

  1. 按 F5。

  2. 验证命名范围和列表对象是否被来自数据源的数据所填充。

  3. 通过单击按钮,滚动一些记录。

  4. 保存工作簿,然后关闭工作簿和 Visual Studio。

  5. 禁用到数据库的连接。如果数据库位于服务器上,则拔掉计算机的网线,或者如果数据库位于开发计算机上,则停止 SQL Server 服务。

  6. 打开 Excel,然后从 \bin 目录(在 Visual Basic 中为 \My Master-Detail\bin,在 C# 中为 \My Master-Detail\bin\debug)打开“My Master-Detail.xls”。

  7. 滚动一些记录,以查看断开连接后工作表是否操作正常。

  8. 重新连接数据库。如果数据库位于服务器上,则将计算机再次连接到网络,或者如果数据库位于开发计算机上,则启动 SQL Server 服务。

后续步骤

本演练演示在工作表上创建主/从数据关系及缓存数据集的基本操作。下一步可能要执行以下几项任务:

请参见

概念

将数据绑定到控件

缓存数据

宿主项和宿主控件概述

其他资源

Office 解决方案中的数据