在ADO.NET数据集中浏览多个相关表(3)

ado|数据

显示数据
  此应用程序使用组合框、列表框和 RTF 文本框来选择和显示数据。
  
  添加选择和显示数据的控件
  
  在 Solution Explorer(解决方案资源管理器)中,右键单击 Form1(.cs 或 .vb,取决于应用程序的语言),然后从快捷菜单中选择 View Designer(视图设计器)。
  在窗体的左半部,添加一个 ListBox 控件,并将其 Name 属性设置为 lbOrders。
  在窗体的右半部,添加一个 RichTextBox 控件,并将其 Name 属性设置为 rtbDetails。
  在列表框的上方,添加一个 ComboBox 控件,并将其 Name 属性设置为 cbCustomers。
  保存项目。
  
  
  图 1:建议的窗体控件布局
  
  现在,可以开始向应用程序添加功能了。
  
  设置显示公司名称的组合框
  
  选择组合框 (cbCustomers) 并设置以下属性: 属性 设置
  DataSource DsNorthwind1
  DisplayMember Customers.CompanyName
  ValueMember Customers.CustomerID
  
  用数据填充表
  要用数据填充表,必须为应用程序添加代码。
  
  在数据集 (dsNorthwind1) 中的客户表和订单表中填充数据
  
  双击窗体上的一块空白区域,为 Form1_Load 事件创建事件处理程序。
  添加以下代码:
  
  ' Visual Basic
  Private Sub Form1_Load(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles MyBase.Load
  ' 关闭数据集中的约束。
  DsNorthwind1.EnforceConstraints = False
  ' 用数据填充表。
  daOrders.Fill(DsNorthwind1)
  daCustomers.Fill(DsNorthwind1)
  
  ' 重新开启约束。
  DsNorthwind1.EnforceConstraints = True
  End Sub
  
  // C#
  private void Form1_Load(object sender, System.EventArgs e)
  {
  // 关闭数据集中的约束。
  dsNorthwind1.EnforceConstraints = false;
  
  // 用数据填充表。
  daOrders.Fill(dsNorthwind1);
  daCustomers.Fill(dsNorthwind1);
  
  // 重新开启约束。
  dsNorthwind1.EnforceConstraints = true;
  }
  
  
  
  保存项目。
  按 F5 键运行该应用程序。现在组合框中包含一个公司名称列表。
  关闭窗体。虚拟主机 
  在两个表中浏览相关记录
  这里简要介绍一下如何在数据集中构成一对多关系的两个表之间访问数据。在选择一个数据行之后,可以通过调用 GetChildRows 或 GetParentRow 方法并向该数据行传递适当的数据关系来返回其相关记录。
  
  注意:GetChildRows 方法将以 DataRow 对象数组的形式返回数据,而 GetParentRow 方法只返回一个单个的数据行。虚拟主机 
  要演示这一功能,需要给应用程序添加一些代码,以返回组合框中选定客户的所有订单(子行)。更改组合框中的选定客户会引发 ComboBox.SelectedIndexChanged 事件,列表框中将填充该选定客户的每个订单的订单 ID。
  
  您可以根据组合框中选定的客户,调用 GetChildRows 方法。订单表中的所有相关记录都将分配给名为 draOrders 的数据行数组。
  
  注意:下一节将添加在列表框中显示相关订单列表的功能。为确认数组中确实包含相关的记录,数组的长度(即选定客户的订单总数)将显示为窗体的标题。
  创建获取选定客户的订单的事件处理程序
  
  在 Solution Explorer(解决方案资源管理器)中,右键单击 Form1 并从快捷菜单中选择 View Designer(视图设计器)。
  双击组合框为 SelectedIndexChanged 事件创建事件处理程序。
  添加以下代码:
  
  ' Visual Basic
  Private Sub cbCustomers_SelectedIndexChanged _
  (ByVal sender As System.Object, ByVal e As System.EventArgs) _
  Handles cbCustomers.SelectedIndexChanged
  ' 声明一个用来保存选定客户的客户 ID 的字符串。
  Dim SelectedCustomerID As String
  SelectedCustomerID = cbCustomers.SelectedValue.ToString()
  ' 声明一个用来保存选定客户的记录的数据行。
  Dim drSelectedCustomer As DataRow
  drSelectedCustomer = _
  DsNorthwind1.Customers.FindByCustomerID _
  (SelectedCustomerID)
  ' 声明一个用来保存相关记录的数据行数组。
  Dim draOrders As DataRow()
  draOrders = drSelectedCustomer.GetChildRows("CustomersOrders")
  ' 在窗体标题中显示数组的长度(订单数)
  ' 和客户 ID。
  Me.Text = draOrders.Length.ToString() & " 订单所有者 " & _
  SelectedCustomerID
  End Sub
  
  // C#
  private void cbCustomers_SelectedIndexChanged
  (object sender, System.EventArgs e)
  {
  // 声明一个用来保存选定客户的客户 ID 的字符串。
  String SelectedCustomerID;
  SelectedCustomerID = cbCustomers.SelectedValue.ToString();
  
  // 声明一个用来保存选定客户的记录的数据行。
  DataRow drSelectedCustomer;
  drSelectedCustomer =
  dsNorthwind1.Customers.FindByCustomerID(SelectedCustomerID);
  
  // 声明一个用来保存相关记录的数据行数组。虚拟主机 
  DataRow[] draOrders;
  draOrders = drSelectedCustomer.GetChildRows("CustomersOrders");
  
  // 在窗体标题中显示数组的长度(订单数)
  // 和客户 ID。
  this.Text = draOrders.Length.ToString() +
  " 订单所有者 " + SelectedCustomerID;
  }
  
  
  
  保存项目。
  运行应用程序。
  选择另一个客户,并检查窗体标题。将显示选定客户的订单总数及其客户 ID。

时间: 2025-01-30 00:07:42

在ADO.NET数据集中浏览多个相关表(3)的相关文章

在ADO.NET数据集中浏览多个相关表

ado|数据 摘要:ADO.NET 中的数据集是一种在内存中表示数据的方法,它可以包含多个相关的数据表.本文介绍了在数据集中浏览这些相关数据表的方法.您将在 Visual Basic? .net 或 Visual C#? .NET 中创建一个 Windows? 应用程序,基于选定的记录返回相关记录,并使用表达式列为相关记录生成合计信息.本文包含一些指向英文站点的链接. 简介 由于数据集可以包含几个相关的表,因此了解如何在父记录和子记录之间进行浏览是一项基本任务,而这并非显而易见,特别是当您试图访

在ADO.NET数据集中浏览多个相关表(1)

ado|数据  摘要:ADO.NET 中的数据集是一种在内存中表示数据的方法,它可以包含多个相关的数据表.本文介绍了在数据集中浏览这些相关数据表的方法.您将在 Visual Basic .NET 或 Visual C# .NET 中创建一个 Windows 应用程序,基于选定的记录返回相关记录,并使用表达式列为相关记录生成合计信息.本文包含一些指向英文站点的链接.      简介   由于数据集可以包含几个相关的表,因此了解如何在父记录和子记录之间进行浏览是一项基本任务,而这并非显而易见,特别是

在 ADO.NET 数据集中浏览多个相关表(1)

ado|数据  摘要:ADO.NET 中的数据集是一种在内存中表示数据的方法,它可以包含多个相关的数据表.本文介绍了在数据集中浏览这些相关数据表的方法.您将在 Visual Basic .NET 或 Visual C# .NET 中创建一个 Windows 应用程序,基于选定的记录返回相关记录,并使用表达式列为相关记录生成合计信息.本文包含一些指向英文站点的链接.      简介   由于数据集可以包含几个相关的表,因此了解如何在父记录和子记录之间进行浏览是一项基本任务,而这并非显而易见,特别是

在 ADO.NET 数据集中浏览多个相关表(3)

ado|数据 显示数据   此应用程序使用组合框.列表框和 RTF 文本框来选择和显示数据.      添加选择和显示数据的控件      在 Solution Explorer(解决方案资源管理器)中,右键单击 Form1(.cs 或 .vb,取决于应用程序的语言),然后从快捷菜单中选择 View Designer(视图设计器).   在窗体的左半部,添加一个 ListBox 控件,并将其 Name 属性设置为 lbOrders.   在窗体的右半部,添加一个 RichTextBox 控件,并

在 ADO.NET 数据集中浏览多个相关表(4)

ado|数据 显示相关记录   现在您已经有了选定客户的相关记录(存储在数据行数组中),您可以显示它们以便与用户进行交互.应用程序将逐一访问 GetChildRows 方法返回的数据行数组中的数据,并将每个相关记录的"订单 ID"作为单独的项添加到列表框中.      注意:虽然此示例将逐一访问相关数据行数组中的数据,但列表框可能已经使用属性窗口,通过 DataSource 属性.DataMember 属性和 ValueMember 属性被绑定到相关的记录.   在列表框中显示相关记录

在 ADO.NET 数据集中浏览多个相关表(5)

ado|数据 创建关系      在 Solution Explorer(解决方案资源管理器)中,双击 dsNorthwind.xsd 文件.文件将在 XML Designer(XML 设计器)中打开.   从工具栏的 XML Schema(XML 架构)选项卡中,将 Relation(关系)拖到订单表上.   在 Edit Relation(编辑关系)对话框中,设置以下属性:      元素 设置   Name CustomersOrders   Parent Customers   Chil

在ADO.NET数据集中浏览多个相关表(2)

ado|数据  创建应用程序   本节将建立这一演练的起点.随后的步骤将创建数据连接.数据适配器和包含相关表的数据集,以及几个选择和显示数据的控件.      创建新的 Windows 应用程序      从 File(文件)菜单中,指向 New(新建),并选择 Project(项目).将显示 New Project(新建项目)对话框.   在 Project Types(项目类型)窗格中,根据您需要的编程语言,选择 Visual Basic Projects(Visual Basic 项目)或

在 ADO.NET 数据集中浏览多个相关表(6)

ado|数据 表达式列   除了包含静态数据外,还可以基于表达式的结果为 DataColumn 分配值.表达式是一个分配给 DataColumn.Expression 属性的字符串.      当表达式与相关数据一同使用时,数据列可以包含:      相关数据列的计算所得值.   相关数据列的合计信息.   相关数据的逻辑比较结果.   为说明处理相关数据时的值表达式列,我们将针对每种使用情况介绍一个示例,并添加到 DataRelationExample 应用程序中.      添加包含计算值的

在 ADO.NET 数据集中浏览多个相关表(2)

ado|数据 创建应用程序   本节将建立这一演练的起点.随后的步骤将创建数据连接.数据适配器和包含相关表的数据集,以及几个选择和显示数据的控件.      创建新的 Windows 应用程序      从 File(文件)菜单中,指向 New(新建),并选择 Project(项目).将显示 New Project(新建项目)对话框.   在 Project Types(项目类型)窗格中,根据您需要的编程语言,选择 Visual Basic Projects(Visual Basic 项目)或