现在我想用BindingSource是行控件与对象绑定,而这个DataSource来源一个类对象,如一个类对象跟另一个类对象有关。如:有一个类叫Tray类,一个叫Meter类,Tray可以包含多个Meter,那么我在窗体添加两个BindingSource控件同时将其数据源用添加项目数据源的方式向导“对象”添加这两个类,然后再在控件中加两个DataGridView控件数据源分别绑定到这两个BindingSource上,现在我想要的效果是,绑定Tray类与Meter类的有关系,当在绑定Tray类的DataGridView控件行时在绑定Meter类的DataGridView控件中显示出与之有关系的Meter数据。不知该如何处理,请高手指教???

解决方案 »

  1.   

    把第二个BindingSouce的数据源指向第一个BindingSource然后把datamerbem设置为Meter 其他设置不用动
      

  2.   

    将对象数据生成DataSet数据,可以使用DataRelation
    http://technet.microsoft.com/zh-cn/magazine/y8c0cxey(VS.85).aspx
    或者手动配置TableAdapter
    http://msdn.microsoft.com/zh-cn/library/5xf878ky(v=vs.80).aspx
      

  3.   

    不好意思,第二个链接错了
    http://msdn.microsoft.com/zh-cn/library/ms171892(v=vs.80).aspx
      

  4.   

    看你的对象设计情况
    如果你的对象设计是本身包含关系的话,我1楼的方法即可class Tray
    {
      List<Meter>  Meter{get;set;} 
    } 这种情况的对象,本身就有关系关联,所以直接如1楼设置即可
    如果你本身就是两毫无关联的对象设计那么可以在第一个BindingSouce相关事件上设置监听,一般是ItemChanged事件,然后手动根据第一个BindingSouce的ccuritem值获取Meter关联数据而后设置第二个BindingSouce的数据源
      

  5.   

    实现了这个绑定后,为什么我在主datagridview选择一行输入值,然再在子datagridview输入多行值 ,然后再在主datagridview中新建行输入值,可当再去选择前一个输入的行时,在子datagridview输入的值无法显示,不见了。该如何处理呢?如主datagriedview(dg1)绑定bindingsource1(bd1),子datagridview(dg2)绑定bindingsource2(bd2),而bd2.datasource=bd1 bd2.dataMember为bd1中的一个 List<Meter>()集合。dg1中输入一行,再到dg2中输入多行,再dg1中新输入一行后选择先前输入的dg1的行dg2中的数据不见了,要如何做才能保持他们的关系在内存不掉数据??  谢谢解答
      

  6.   

    我所希望的是要暂时以父子关系存在内存中,选父行所子数据在子datagridview中显示,但这种关系不知怎么的在我输入后选择其他父行后,再来选择时子数据全部没有了,在内存中消失了。