如何在同一页面显示父子表的内容

 

1、使用 DataView 进行关系导航

如果 DataSet 中的表之间存在关系,则可以使用 DataRowView 的 CreateChildView 方法为父表中的行创建一个 DataView,该 DataView 包含来自相关子表的行。

关键代码:

首先要定义关系:

private DataRelation 关系对象;

关系对象=数据集名.Relations.Add("关系名",数据集名.表1名. Columns["关系列名"],数据集名.表2名. Columns["关系列名"]);

其次在DataGrid1_SelectedIndexChanged事件中写以下代码:

BindData(); //数据绑定             

            DataRow crRow;//声明数据行

            int iIdx;

            iIdx = DataGrid1.SelectedIndex ;//获得在DataGrid中所选择的行号

            crRow = this.数据集名.数据表1名.Rows[iIdx];//获得所选择的行

            Label3.Text="";

            //通过DataRow的GetChildRows()获得子表中与之关联的所有行;

            foreach(DataRow r in crRow.GetChildRows(“关系名”))

            {

                Label3.Text += r["订单ID"] + ", ";

            }

            DataView parentTableView = new DataView(数据集名.数据表1名); //父表的数据视图

            DataRowView currentRowView = parentTableView[iIdx]; //父表行的数据视图

        //通过DataRowView的CreatChildView()方法获得子表的数据表视图

            DataGrid2.DataSource = currentRowView.CreateChildView(“关系名”);

            DataGrid2.DataBind();

2、导航表间关系

DataRelation 的主要功能之一是允许您在 DataSet 中从一个 DataTable 导航至另一个 DataTable。它使您能够在给定相关 DataTable 中的单个 DataRow 的情况下检索一个 DataTable 中的所有相关 DataRow 对象。例如,当建立客户表和订单表之间的 DataRelation 后,可以使用 DataRow.GetChildRows 检索特定客户行的所有订单行。

posted @ 2005-06-11 13:44  虚空境界  Views(1165)  Comments(0Edit  收藏  举报