帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统v4.6
栏 目:
 
您的位置:首页 > 技术文档 > ASP.NET编程 >
在 ADO.NET 数据集中浏览多个相关表(3)
作者:Microsoft 发布时间:2005-03-12 来源:ASPCOOL
     显示数据
  此应用程序使用组合框、列表框和 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。
  
  关闭窗体。

  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·在 ADO.NET 数据集中浏览多个相关  (2005-03-12)
 ·在 ADO.NET 数据集中浏览多个相关  (2005-03-12)
 ·在 ADO.NET 数据集中浏览多个相关  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·帝国网站管理系统采集使用教程
·帝国网站管理系统模板制作教程
·帝国CMS模板下载
·Discuz6.0.1UC版通行证发布
·帝国网站管理系统之网站迁移教程
·帝国网站管理系统实例入门教程下载
·《帝国网站管理系统》实例入门教程
   类别最新
·ASP.NET中为DataGrid添加合计字段
·.text urlRewrite介绍
·利用 ASP.NET 的内置功能抵御 Web
·ASP.NET Cache
·用 WebClient.UploadData 方法 上载
·ASP.NET 程序设计-序
·什么是客户端/伺服端(Client/Serve
·因特网应用程序的开发
·网页的种类
·.NET Framework-Microsoft Visual
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统