初学,求问各位兄弟姐妹:界面上有两个COMBOX(CB1、CB2),另有两个DATAGRID(DGA、DGB),DGA对应一个类(A),A有两个属性X、Y(在DGA上表现为两个字段X、Y),DGB对应另一个类(B),B有一个属性Z(在DGB上表现为一个字段Z)
我本来想达到的目的如下:在CB1的下拉框中显示Z的内容集合,然后选择其一,将选定的Z写入A的X属性,CB1显示X当前的内容在CB2的下拉框中显示Z的内容集合,然后选择其一,将选定的Z写入A的Y属性,CB2显示Y当前的内容结果出了个问题,就是我在CB1的下拉框中选定一个值后,CB2的值竟然也跟着变化了,同样我在CB2中选定一个值后,CB1中的值也会跟着变化,在DATAGRID上表现为----当焦点变化后,X、Y总会变成一样的值我的本意是,CB1与CB2分别从类B实例Z属性的值的集合中取值,然后分别赋值给类A实例的X属性与Y属性
大家帮我看看是哪里的设置问题CB1的数据设置如下DATASOURCE: B
DISPLAYMEMBER:Z
VALUEMEMBER:Z
SELECTEDVALUE:A-XCB2的数据设置如下:DATASOURCE: B
DISPLAYMEMBER:Z
VALUEMEMBER:Z
SELECTEDVALUE:A-Y

解决方案 »

  1.   

    CB1和CB2不要绑定同一个DataSource
      

  2.   


    那请问如果不同时绑定B,如何做到CB1与CB2的下拉内容都是Z呢?也就是说我该怎么处理才能把B分成两个映像,以便CB1与CB2的下拉框内容是一致的(都是B的Z属性的值的集合),但绑定对象却是不一致的
      

  3.   

    虽然显示的内容一样,但是你的两个ComboBox的数据源必须是两个不同的实例.
      

  4.   


    那是不是说我必须做两个B的印像B1、B2,使之内容分别与B完全等同(在B的内容变化时也自动相应变化),然后CB1的数据源联上B1,CB2的数据源联上B2,是不是应该这样做?问题是我该怎么做B的印像呢??顺便问一下,这里有没有用C#+ECO的朋友??另请问一下,论坛的分数是做什么用的??
      

  5.   

    不必不同类,只要实例不同就可以了,比如B b1=new B();B b2=new B();comboBox1.DataSource=b1.GetSource();comboBox2.DataSource=b2.GetSource();
      

  6.   

    CB1和CB2不要绑定同一个DataSource
    你可以在界面上放两个
    BindSource,然后两个BindSource都绑定同一个数据源
    如:
    bindSourceA.DataSource=绑定CB的数据源
    bindSourceB.DataSource=绑定CB的数据源
    CB1和CB2分别绑定bindSourceA、bindSourceB
    这时source的数据源是一样的,即都是B的Z属性的值的集合
    但绑定的对象是不一致的
      

  7.   


    最简单的,用Copy()
    comboBox1.DataSource = dt;
    comboBox1.DisplayMember = "name";
    comboBox1.ValueMember = "pwd";comboBox2.DataSource = dt.Copy();
    comboBox2.DisplayMember = "name";
    comboBox2.ValueMember = "pwd";
      

  8.   

    俺果然是菜鸟中的菜鸟,不过俺刚开始学编程,也没人教,自我原谅一下,自我原谅一下解决了,谢谢楼上各位兄台原来只需要再加一个句柄表达式控件就可以了同一个类,用两个(或多个)句柄表达式来散发信息就可以了只需在界面上加两个ExpressionHandle(分别取名EHB1、EHB2),再把EH1与EH2的OCL表达式分别设置为"B.allInstances.Z"----意思就是让EH1与EH2分别获得类B的全部属性中的Z属性的值的集合然后把CB1的DATASOURCE设为EHB1,把CB2的DATASOURCE设为EHB2,就全部OK了非常谢谢大家