2015-11-27 2 views
0

Существует хороший пример Advanced Datagrid и использование ArrayCollectionhere. Мне нравится иметь что-то подобное;Как создать ArrayCollection?

private var dpFlat:ArrayCollection = new ArrayCollection([ 
{Region:"Southwest", Territory:"Arizona", 
    Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000}, 
{Region:"Southwest", Territory:"Arizona", 
    Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000}, 
{Region:"Southwest", Territory:"Central California", 
    Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000}, 
{Region:"Southwest", Territory:"Nevada", 
    Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000}, 
{Region:"Southwest", Territory:"Northern California", 
    Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000}, 
{Region:"Southwest", Territory:"Northern California", 
    Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000}, 
{Region:"Southwest", Territory:"Southern California", 
    Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000}, 
{Region:"Southwest", Territory:"Southern California", 
    Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000} 
]); 

Мне нужно прочитать XML-файл и получить от него некоторые атрибуты. Затем создайте пользовательский ArrayCollection с этими атрибутами. Прямо сейчас я создаю пользовательский XML, но я больше не хочу использовать XML и вместо этого проверяю коллекцию массивов.

Вот код, который я читаю и создаю еще XML;

kitapKonuSayisi = _tempXMLOR.Body.Ogrenci.length(); 

for(var itra:int = 0; itra < kitapKonuSayisi; itra++) 
{ 
    uniteAdi = _tempXMLOR.Body.Ogrenci[itra].UniteAdi; 
    konuAdi = _tempXMLOR.Body.Ogrenci[itra].KonuAdi; 
    ogrenciAyrintiRaporArray.push([uniteAdi, konuAdi]); 
} 

for(var itrc:int = 0; itrc < kitapKonuSayisi; itrc++) 
{ 
    kitapUniteSayisi = _tempXMLOR.Body.Ogrenci[itrc].UniteAdi.length(); 
    uniteAdi = _tempXMLOR.Body.Ogrenci[itrc].UniteAdi; 
    if(raporStringUnitCheck === true) 
    { 
     ogrenciAyrintiRaporStr += ('\t<Unite name="' + uniteAdi + '" yuzde="' + 100 + '">\n'); 
     raporStringUnitCheck = false; 
    } 

    for(var itrd:int = 0; itrd < kitapUniteSayisi; itrd++) 
    { 
     if(ogrenciAyrintiRaporArray[itrd][0] == _tempXMLOR.Body.Ogrenci[itrc].UniteAdi) 
     { 
      konuAdi = _tempXMLOR.Body.Ogrenci[itrc].KonuAdi; 
      ogrenciAyrintiRaporStr += ('\t\t<Konu name="' + konuAdi + '" yuzde="' + 100 + '"/>\n'); 
     } 
    } 
} 
if(raporStringUnitCheck === false && raporStringCompCheck === false) 
{ 
    ogrenciAyrintiRaporStr += ('\t</Unite>\n'); 
    ogrenciAyrintiRaporStr += ('</Rapor>'); 
    raporStringCompCheck = true; 
    raporString2XML = new XML(ogrenciAyrintiRaporStr); 
} 

Так как я могу создатьArrayCollectionи заполнить элементы в этой схеме?

ответ

0

Похоже, у вас уже есть массив «ogrenciAyrintiRaporArray». Вы можете создать ArrayCollection из этого:

var myArrayCollection:ArrayCollection = new ArrayCollection(ogrenciAyrintiRaporArray); 

Это немного странно, что у вас есть массив, состоящий из массивов

ogrenciAyrintiRaporArray.push([uniteAdi, konuAdi]); 

Обычно существуют объекты в ArrayCollection, которые можно легко использовать для отображения данных в списках, datagrids и т. д. Кроме того, легче получить доступ к свойствам объекта, а не к индексам в массиве. Таким образом, вы можете изменить его на:

ogrenciAyrintiRaporArray.push({uniteAdi:uniteAdi, konuAdi:konuAdi}); 

Тогда у вас есть ArrayCollection объектов и может получить доступ к данным, как

var uniteAdi:* = myArrayCollection.getItemAt(0).uniteAdi; 

вместо

var uniteAdi:* = myArrayCollection.getItemAt(0)[0]; 

что делает неясным, что в позиции 0, 1 или 2 в вашем массиве данных

Смежные вопросы