2012-03-11 27 views
0

配列の配列をループその次の構文を使用してます。私のアウトプットは、私が達成しようとしているものではありません。私のコードは次のとおりです:フレックス:私は、配列の配列を構築しようとしています

var labs:ArrayCollection = new ArrayCollection(); 
    var sets:ArrayCollection = new ArrayCollection(); 

    var labsArray:Array = ["ProDPI","WHCC","Tin"]; 
    var setsArray:Array = ["Set1","Set2","Set3"]; 

    var folders:ArrayCollection = new ArrayCollection(); 
    var foldersArray:Array = [labsArray, setsArray]; 

    var objFolderBuild:Object = new Object; 

     for (var i:int = 0; i< foldersArray.length;i++) { 
       for (var j:int = 0; j < foldersArray[i].length; j++) { 
        objFolderBuild.labName = foldersArray[i][j]; 
        folders.addItem(objFolderBuild); 
       } 
     } 
labFolderList.labelField="labName"; 
labFolderList.dataProvider=folders; 
setFolderList.labelField="setName"; 
setFolderList.dataProvider=folders; 

私の出力は「Set3」への6つの参照として出てきています。私のforループには明らかに何か間違いがありますが、私はそれを理解できません。どんなアイデアも大きな助けになるでしょう。

+0

実際にコードに何か出力されている箇所がありませんか?あなたはどんなアウトプットを指していますか? – JeffryHouser

+0

labFolderList.labelField =「labName」<=は右の人にコンボボックス – Bungdaddy

答えて

2

私はあなたのコードが正しくfoldersArray [i]の[j]を実行トレースしていることを証明するために一緒にこのクイックアプリを投げました。それはあなたのアプリからのコードの90%です。

ただし、objFoldersBuildオブジェクトは1回のみ作成されることを指摘します。ですから、ループを通過するたびに、既存のオブジェクトのプロパティの値を変更し、それをフォルダArrayCollectionに追加することができます。あなたは、同じ正確なオブジェクトの複数のコピーを持つArrayCollectionを持っています。答えは、毎回新しいループを作成することです。

<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" preinitialize="windowedapplication1_preinitializeHandler(event)"> 
    <fx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 
      import mx.events.FlexEvent; 

      protected function windowedapplication1_preinitializeHandler(event:FlexEvent):void 
      { 
       var labs:ArrayCollection = new ArrayCollection(); 
       var sets:ArrayCollection = new ArrayCollection(); 

       var labsArray:Array = ["ProDPI","WHCC","Tin"]; 
       var setsArray:Array = ["Set1","Set2","Set3"]; 

       var folders:ArrayCollection = new ArrayCollection(); 
       var foldersArray:Array = [labsArray, setsArray]; 

       var objFolderBuild:Object = new Object; 

       for (var i:int = 0; i< foldersArray.length;i++) { 
        for (var j:int = 0; j < foldersArray[i].length; j++) { 
         trace(foldersArray[i][j]); 
           objFolderBuild = new Object; 
         objFolderBuild.labName = foldersArray[i][j]; 
         folders.addItem(objFolderBuild); 
        } 
       } 
/*    labFolderList.labelField="labName"; 
       labFolderList.dataProvider=folders; 
       setFolderList.labelField="setName"; 
       setFolderList.dataProvider=folders; */ 
      } 

     ]]> 
    </fx:Script> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 
</s:WindowedApplication> 
+0

を移入するためにlabelFieldを変更するには、このを使用します!どうもありがとう。フレックスは私のお尻を蹴っていた! – Bungdaddy

関連する問題