在 ADO.NET 数据集中浏览多个相关表(3)
点击次数:17 次 发布日期:2008-11-26 15:25:41 作者:源代码网
|
源代码网推荐 此应用程序使用组合框、列表框和 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。 源代码网推荐 源代码网推荐 关闭窗体。 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
