日期:2014-05-18  浏览次数:20826 次

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

------解决方案--------------------
把第二个BindingSouce的数据源指向第一个BindingSource

然后把datamerbem设置为Meter 

其他设置不用动
------解决方案--------------------
将对象数据生成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
------解决方案--------------------
不好意思,第二个链接错了
http://msdn.microsoft.com/zh-cn/library/ms171892(v=vs.80).aspx
------解决方案--------------------
看你的对象设计情况
如果你的对象设计是本身包含关系的话,我1楼的方法即可

class Tray
{
List<Meter> Meter{get;set;} 


这种情况的对象,本身就有关系关联,所以直接如1楼设置即可


如果你本身就是两毫无关联的对象设计

那么可以在第一个BindingSouce相关事件上设置监听,一般是ItemChanged事件,然后手动根据第一个BindingSouce的ccuritem值获取Meter关联数据而后设置第二个BindingSouce的数据源
------解决方案--------------------
探讨
实现了这个绑定后,为什么我在主datagridview选择一行输入值,然再在子datagridview输入多行值 ,然后再在主datagridview中新建行输入值,可当再去选择前一个输入的行时,在子datagridview输入的值无法显示,不见了。该如何处理呢?

如主datagriedview(dg1)绑定bindingsource1(bd1),子datagridview(dg2)绑定bi……