Flex 3使用ArrayCollection填充Datagrid和ComboBox

时间:2010-08-11 17:08:53

标签: flex flex3 datagrid combobox arraycollection

我使用此arrayCollection来填充Flex 3 Datagrid。我还想使用这个arrayCollection来填充一个带有Name节点的comboBox。

在arrayCollection中,我已经列出了两次名称。我在Datagrid中有两行。

如果我将ComboBox的labelfield设置为Name,那么Name将在ComboBox菜单中列出两次。有没有办法使用这个arrayCollection并在comboBox中只列出一次名称?

我总是可以为Name创建另一个循环和数组集合,但我想知道是否有更好的方法。

    var i:uint; 
    for (i=0; i<myArray.length; i++){
        myDGArray = [
         {Name: myArray[i].Name, Subject: 'Math:', Pass: myArray[i].math_pass, Fail: myArray[i].math_fail},
         {Name: myArray[i].Name, Subject: 'Reading:', Pass: myArray[i].reading_pass, Fail: myArray[i].reading_fail}
                             ]
                }

myAC=new ArrayCollection(myDGArray);

谢谢。

-Laxmidi

1 个答案:

答案 0 :(得分:1)

我有点困惑。根据您的代码示例,名称将在ComboBox中列出两次,因为在dataProvider中使用了两次相同的名称。

您可能需要考虑将dataProvider转换为两个单独的ListCollectionView对象,对每个对象提供不同的过滤,并将每个对象用作se [单独的dataProviders。

在psuedo代码中,我就是这样做的:

public var comboBoxCollection : ListCollectionView = new ListCollectionView(myAC );
public var dataGridCollection : ListCollectionView = new ListCollectionView(myAC );

对comboBoxCollection应用过滤以过滤掉具有重复名称的条目。 More info on collection filtering in the docs

相关问题