2009-07-04 17 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の中のアイテムを入れるためには、ヴェルディ(面積、値)面積は、

とき、私、後でコレクションをループ、順序の変更です。今はVerdi then Areal(価値、面積)です。

誰に問題があるのか​​考えている人はいますか?

htmlで後でテーブルを作るためのPHPスクリプトに渡すと、実際には物事が失われます。 (サイズと値が異なるいくつかの異なる動的データグリッドがあるので、PHPスクリプトのf.ex "Areal"を直接指すことはできません)

そして、誰かが知っていますかどうすればその厄介なものを取り除くことができますmx_internal_uid

答えて

4

AS3(オブジェクトクラスまたは{}で定義されたもの)の未加工オブジェクトは並べ替えがありません。つまり、その順序は予測できません。私はここで2つのアイデアを混乱させています。 ArealとVerdiの文字列は、オブジェクトマップ内のキーです。配列コレクションは、そのような2つのオブジェクトで構成されるリストです。したがって、配列コレクションに適用されたソートは、オブジェクト内ではなくオブジェクト内でソートされます。

「Totalareal」を取得するには、areaCollection.source[0].Arealを参照する必要があります。あなたがfor(var s:String in areaCollection.source[0]) { }を行う場合とareaCollection.source[1].Verdiint(result.area* 100)/100 + " kvm"

を得るために、あなたは「S」の値が「面積」であると「ヴェルディ」またはその逆(例えば、順序保証されません)で、二回反復します。

意味がありますか?注文が必要な場合は、オブジェクトを["Totalareal", (int(totalArea * 100)/100 + " kvm")]の代わりに配列にし、[1]を使用して "Verdi"にアクセスすることができます。

p.s. mx_internal_idを削除する方法が不明です。

+0

私は理解します。 もう1つの質問 配列が関連付けられていない場合、DataGrid(Flex 3)のデータプロバイダとしてArrayCollectionを使用するにはどうすればよいですか? dataFieldの配列[0]にアクセスできますか? – oletk

+0

DataGridでの私の経験は限られていますが、元のアプローチは正しいと思います。あなたは、連想オブジェクトのArrayCollectionが必要です。列の順序を知っているので、PHPスクリプトに送る前に、インデックスのための別々の静的な列のマップを作成したいでしょうか?例えば、MAP = {"Areal":0、 "Verdi":1}とし、それらのオブジェクトを配列に変換する直列化関数を書く。 var phpArray:Array = [];それぞれに対して (var o:ArrayCollectionのオブジェクト){ var tmpA:Array = []; (var s:oの文字列){ tmpA [MAP [s]] = o [s]; } phpArray.push [tmpA]; } – Glenn

関連する問題