如何创建ArrayCollection



这里有一个很好的Advanced DatagridArrayCollection的使用示例。我喜欢那样的东西;

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,而是选中Array Collection。

这是我读取并创建另一个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 += ('tt<Konu name="' + konuAdi + '" yuzde="' + 100 + '"/>n');
        }
    }
}
if(raporStringUnitCheck === false && raporStringCompCheck === false)
{
    ogrenciAyrintiRaporStr += ('t</Unite>n');
    ogrenciAyrintiRaporStr += ('</Rapor>');
    raporStringCompCheck = true;
    raporString2XML = new XML(ogrenciAyrintiRaporStr);
}

那么我如何创建ArrayCollection并填充该方案中的元素呢

看起来你已经有了一个数组"ogrenciAyrintiAporArray"。您可以从中创建一个ArrayCollection:

var myArrayCollection:ArrayCollection = new ArrayCollection(ogrenciAyrintiRaporArray);

有点奇怪的是,你有一个由阵列组成的阵列

ogrenciAyrintiRaporArray.push([uniteAdi, konuAdi]);

通常,ArrayCollection中有一些对象可以很容易地用于在列表、数据网格等中显示数据。此外,访问对象中的属性比访问数组中的索引更容易。所以你可能想把它改成:

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

然后你就有了一个对象的数组集合,可以访问像这样的数据

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

而不是

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

这使得不清楚数据阵列中0、1或2位置的内容

最新更新