2010-08-11 1 views
0

Я использую массив arrayCollection для заполнения Flex 3 Datagrid. Я также хотел бы использовать этот массив, чтобы заполнить comboBox с узлом Name.Flex 3 Использование массива ArrayCollection для заполнения как Datagrid, так и ComboBox

В arrayCollection у меня есть Имя, указанное дважды. У меня две строки в Datagrid.

Если я установил Labelield ComboBox в Name, то имя будет указано дважды в меню ComboBox. Есть ли способ использовать этот массив CellCollection и иметь каждое имя, указанное только один раз в comboBox?

Я всегда могу сделать еще один цикл и массив для имени, но мне было интересно, есть ли лучший способ.

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

Я немного смущен. На основе вашего примера кода имя будет дважды указано в ComboBox, потому что одно и то же имя используется дважды в вашем dataProvider.

Возможно, вы захотите преобразовать свой dataProvider в два отдельных объекта ListCollectionView, обеспечить различную фильтрацию для каждого объекта и использовать их как se [отдельные dataProviders.

В коде псевдо это, как я хотел бы сделать это:

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

Применить фильтрацию на comboBoxCollection, чтобы отфильтровать записи с одинаковыми именами. More info on collection filtering in the docs.

+0

Привет, www.Flextras.com, Большое спасибо за ответ. The CollectonView - это то, что я ищу. Я не слышал об этом. Спасибо за совет и ссылку. – Laxmidi

+0

ListCollectionView является родительским, если память служит мне, как ArrayCollection, так и XMLListCollection. – JeffryHouser