我使用此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
答案 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