2009-07-04 82 views
0

我会先告诉你函数。ArrayCollection颠倒我的对象的顺序

private var areaCollection:ArrayCollection; 

private function generateAreaCollection():void 
{ 
    areaCollection = new ArrayCollection();    
    areaCollection.addItem({Areal: "Totalareal:", Verdi: int(totalArea * 100)/100 + " kvm"}); 
    areaCollection.addItem({Areal: "Hovedtakets areal:", Verdi: int(result.area* 100)/100 + " kvm"}); 

    //Lots of other stuff omitted (just more addItems). 
} 

正如你看到的,我把项目在ArrayCollection的顺序是地域,然后威尔第(区,值)

当我遍历集合后,订单的变化。现在它是威尔第然后Areal(价值,区域)。

有没有人有什么可能是这个问题的想法?

当我将它传递给一个PHP脚本以便在以后的html中制作表格时,它确实会毁掉一些东西。 (我有几个不同的动态数据网格大小和“值”不同,所以我不能直接指向我的PHP脚本中的f.ex“Areal”)

顺便说一句,有没有人知道我如何删除那讨厌的mx_internal_uid

回答

4

AS3中的原始对象(对象类或由{}定义的东西)没有排序。也就是说,订单是不可预测的。你在这里混淆了两个想法。 Areal和Verdi字符串是对象图中的关键字。数组集合是由两个这样的对象组成的列表。因此,任何应用于数组集合的排序都会对这些对象进行排序,但不会排序在对象内。

所以你需要参考areaCollection.source[0].Areal得到“Totalareal”。而areaCollection.source[1].Verdi得到int(result.area* 100)/100 + " kvm"

如果你这样做,你for(var s:String in areaCollection.source[0]) { }将遍历两次,“地域”和“威尔第”或反之亦然(例如,为了不保证)的“S”是价值。

有意义吗?如果您需要订购,您可以将对象设为数组["Totalareal", (int(totalArea * 100)/100 + " kvm")],然后使用[1]访问“Verdi”。

P.s.不知道如何删除mx_internal_id。

+0

我明白了。 另一个问题然后: 如何在ArrayGollection作为DataGrid(Flex 3)的数据提供者时使用ArrayCollection当数组不关联?是否有可能访问dataField中的数组[0]? – oletk 2009-07-05 05:12:18