演练:使用缓存的数据集创建主/从关系
本演练演示如何在工作表上创建主/从关系,以及如何缓存数据,以使解决方案可以脱机使用。
**适用于:**本主题中的信息适用于 Excel 2007 和 Excel 2010 的文档级项目。有关更多信息,请参见按 Office 应用程序和项目类型提供的功能。
通过本演练,您将学会如何执行以下任务:
将控件添加到工作表中。
设置要在工作表中缓存的数据集。
添加用于滚动记录的代码。
测试项目。
提示
以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。 您安装的 Visual Studio 版本以及使用的设置决定了这些元素。 有关更多信息,请参见 使用设置。
系统必备
您需要以下组件来完成本演练:
-
Visual Studio 2010 的一个版本,其中包含 Microsoft Office 开发工具。有关更多信息,请参见[将计算机配置为开发 Office 解决方案](bb398242\(v=vs.100\).md)。
Microsoft Office Excel 2007 或 Excel 2010。
对 Northwind SQL Server 示例数据库的访问。 数据库可位于开发计算机上或服务器上。
从 SQL Server 数据库中读取数据和向其中写入数据的权限。
创建新项目
在此步骤中,您将创建一个 Excel 工作簿项目。
创建新项目
- 使用 Visual Basic 或 C#,创建一个 Excel 工作簿项目并将其命名为“My Master-Detail”。 确保已选择**“创建新文档”**。 有关更多信息,请参见如何:在 Visual Studio 中创建 Office 项目。
Visual Studio 在设计器中打开新的 Excel 工作簿,并将“My Master-Detail”项目添加到**“解决方案资源管理器”**中。
创建数据源
使用**“数据源”**窗口向您的项目中添加类型化数据集。
创建数据源
如果**“数据源”窗口不可见,请单击“数据”菜单上的“显示数据源”**。
单击**“添加新数据源”以启动“数据源配置向导”**。
选择**“数据库”,然后单击“下一步”**。
选择到 Northwind 示例 SQL Server 数据库的数据连接,或者使用**“新建连接”**按钮添加新连接。
选择或创建连接后,单击**“下一步”**。
如果选择了该选项,请将其清除以保存连接,然后单击**“下一步”**。
展开**“数据库对象”窗口中的“表”**节点。
选择**“Orders”表,然后选择“Order Details”**表。
单击**“完成”**。
向导将这两个表添加到**“数据源”窗口中。 还将一个类型化数据集添加到在“解决方案资源管理器”**中可见的项目中。
将控件添加到工作表
在此步骤中,将在第一个工作表中添加一个命名范围、一个列表对象和两个按钮。 首先,从**“数据源”窗口添加命名范围和列表对象,从而使其自动绑定至数据源。 然后,从“工具箱”**添加按钮。
添加命名范围和列表对象
验证**“My Master-Detail.xls”工作簿在 Visual Studio 设计器中是否已打开,并且其中是否显示“Sheet1”**。
打开**“数据源”窗口,然后展开“Orders”**节点。
选择**“OrderID”**列,然后单击出现的下拉箭头。
单击下拉列表中的**“NamedRange”,然后将“OrderID”列拖至单元格“A2”**中。
将在单元格**“A2”**中创建一个名为 OrderIDNamedRange 的 NamedRange 控件。 同时,会将一个名为 OrdersBindingSource 的 BindingSource、一个表适配器和一个 DataSet 实例添加到该项目中。 该控件绑定到 BindingSource,接着后者绑定到 DataSet 实例。
向下滚动通过**“Orders”表下的列。 该列表的底部是“Order Details”表;该表位于此处是因为它是“Orders”表的子表。 选择这个“Order Details”表,而不是与“Orders”**表处于同一层的某个表,然后单击出现的下拉箭头。
单击下拉列表中的**“ListObject”,然后将“Order Details”表拖至单元格“A6”**中。
将在单元格**“A6”中创建一个名为“Order_DetailsListObject”**的 ListObject 控件,并将其绑定到 BindingSource。
添加两个按钮
从**“工具箱”的“公共控件”选项卡向工作表的单元格“A3”**中添加一个 Button 控件。
此按钮被命名为 Button1。
将另一个 Button 控件添加到工作表的单元格**“B3”**中。
此按钮被命名为 Button2。
接下来,标记将在文档中缓存的数据集。
缓存数据集
通过将数据集设置为 public 并设置**“CacheInDocument”**属性,可标记要在文档中缓存的数据集。
缓存数据集
在组件栏中选择**“NorthwindDataSet”**。
在**“属性”窗口中,将“Modifiers”属性更改为“Public”**。
启用缓存之前,必须将数据集设置为 public。
将**“CacheInDocument”属性更改为“True”**。
下一步是向按钮中添加文本,并在 C# 中添加用于将事件处理程序挂钩的代码。
初始化控件
在处理 Startup 事件期间,设置按钮文本并添加事件处理程序。
初始化数据和控件
在**“解决方案资源管理器”中右击“Sheet1.vb”或“Sheet1.cs”,再单击快捷菜单上的“查看代码”**。
将以下代码添加到 Sheet1_Startup 方法中,以设置按钮文本。
Me.Button1.Text = "<" Me.Button2.Text = ">"
this.button1.Text = "<"; this.button2.Text = ">";
仅对于 C#,向 Sheet1_Startup 方法添加用于处理按钮单击事件的事件处理程序。
this.button1.Click += new EventHandler(button1_Click); this.button2.Click += new EventHandler(button2_Click);
添加用于滚动记录的代码
在每个按钮的 Click 事件处理程序中添加代码以在记录中移动。
滚动记录
为 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(); }
为 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(); }
测试应用程序
现在您可以测试工作簿,以确保数据按预期效果显示,并且可以脱机使用该解决方案。
测试数据缓存
按 F5。
验证命名范围和列表对象是否被来自数据源的数据所填充。
通过单击按钮,滚动一些记录。
保存工作簿,然后关闭工作簿和 Visual Studio。
禁用到数据库的连接。 如果数据库位于服务器上,则拔掉计算机的网线,或者如果数据库位于开发计算机上,则停止 SQL Server 服务。
打开 Excel,然后从 \bin 目录(在 Visual Basic 中为 \My Master-Detail\bin,在 C# 中为 \My Master-Detail\bin\debug)打开**“My Master-Detail.xls”**。
滚动一些记录,以查看断开连接后工作表是否操作正常。
重新连接数据库。 如果数据库位于服务器上,则将计算机再次连接到网络,或者如果数据库位于开发计算机上,则启动 SQL Server 服务。
后续步骤
本演练演示在工作表上创建主/从数据关系及缓存数据集的基本操作。 下一步可能要执行以下几项任务:
部署解决方案。 有关更多信息,请参见Deploying Office Solutions
从其他项目的缓存中检索数据。 有关更多信息,请参见如何:从服务器上的工作簿中检索缓存的数据。