用BindingManageBase来处理
现假如有DataSet 包括2个表 Customer和Order ,Order表通过CustomerId跟Customer表关联//创建DataSet的BindingManageBase
BindingMangageBase manageParent=this.BindingContext["DataSet","Customer"];
//建立Customer表和Order表之间的关系
//要建立关系的主表的列,相当于主键
DataColumn ParentColumn=DataSet.Tables["Customer"].Columns["CustomerId"];
//要建立关系子表的列,相当于子键
DataColumn ChildColumn=DataSet.Tables["Orders"].Columns["CustomerId"];
//根据父表,子表的相关列建立关系
DataRelation myRelation=new DataRelation("myRelation",ParentColumn,ChildColumn,false);
//通过关系建立对应Order表的BindingManageBase
BindingManageBase manageChild=this.BindingContext[DataSet,"Customer.myRelation"];
当对应的Customer的BindingManageBase的当前行改变时,对应的Order的BindingManageBase也跟着变.他们之间关系由DataRelation决定.就实现了主表从表的效果了.
现假如有DataSet 包括2个表 Customer和Order ,Order表通过CustomerId跟Customer表关联//创建DataSet的BindingManageBase
BindingMangageBase manageParent=this.BindingContext["DataSet","Customer"];
//建立Customer表和Order表之间的关系
//要建立关系的主表的列,相当于主键
DataColumn ParentColumn=DataSet.Tables["Customer"].Columns["CustomerId"];
//要建立关系子表的列,相当于子键
DataColumn ChildColumn=DataSet.Tables["Orders"].Columns["CustomerId"];
//根据父表,子表的相关列建立关系
DataRelation myRelation=new DataRelation("myRelation",ParentColumn,ChildColumn,false);
//通过关系建立对应Order表的BindingManageBase
BindingManageBase manageChild=this.BindingContext[DataSet,"Customer.myRelation"];
当对应的Customer的BindingManageBase的当前行改变时,对应的Order的BindingManageBase也跟着变.他们之间关系由DataRelation决定.就实现了主表从表的效果了.
this.dataGrid1.DataSource = this.ds1;
this.dataGrid1.DataMember = "table1";this.dataGrid2.DataSource = this.ds1;
this.dataGrid2.DataMember = "table1.relation12";relation12是两个表之间的关系名。
楼主要定义他们的关系使用DataRelation对象。
主从关系已经OK,但还有一个问题想请教一下。主DataGrid的DataMember只指向一个表单。为什么DataGrid要把从表也显示在主DataGrid里面。TKS
dataGrid1.AllowNavigation = false;
即可。