用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决定.就实现了主表从表的效果了.

解决方案 »

  1.   

    使用DataRelation对象设置绑定的DataMember就行了
    this.dataGrid1.DataSource = this.ds1;
    this.dataGrid1.DataMember = "table1";this.dataGrid2.DataSource = this.ds1;
    this.dataGrid2.DataMember = "table1.relation12";relation12是两个表之间的关系名。
    楼主要定义他们的关系使用DataRelation对象。
      

  2.   

    谢谢两位楼主:
        主从关系已经OK,但还有一个问题想请教一下。主DataGrid的DataMember只指向一个表单。为什么DataGrid要把从表也显示在主DataGrid里面。TKS
      

  3.   

    在DataGrid的AllowNavigation属性设置为真的时候,DataGrid会允许你进行数据主从的浏览,如果你不想进行这样的浏览:
    dataGrid1.AllowNavigation = false;
    即可。