2012-09-13 71 views
0

我有一個ArrayCollection用'o'對象填充。這個AC應該是DataGrid的dataProvider。在設置dp:dgMT.dataProvider=acDataGrid之後,DataGrid僅包含arrayCollection的最後一項。 代碼:DataGrid不適用dataProvider值

[Bindable] 
     public var acDataGrid:ArrayCollection = new ArrayCollection(); 
     protected function ddlLanguage_changeHandler(event:IndexChangeEvent):void{ 

      gcTranslate.headerText=Globals.acLanguages.getItemAt(ddlLanguage.selectedIndex,0).toString(); 
      Globals.acActValues=convertXmlToArrayCollection(File.applicationDirectory.resolvePath("xmls"+File.separator+Globals.acFileNames.getItemAt(ddlLanguage.selectedIndex,0))); 

      Globals.acDataGrid.removeAll(); 
      var o:DataGridObject = new DataGridObject(); 
      var i:int=0; 
      var angol:Object; 
      for each(angol in Globals.acValues){ 
       o.en=angol.value; 
       o.name=angol.name; 

       if(i<Globals.acActValues.length && o.name==Globals.acActValues.getItemAt(i,0).name){ 
        o.translation=Globals.acActValues.getItemAt(i,0).value;     

       } 
       else{ 
        o.translation=""; 
        Globals.acActValues.addItemAt("",i); 
       } 

       acDataGrid.addItemAt(o,i); 

       trace("NAME: "+acDataGrid.getItemAt(i,0).name+" VAL:"+acDataGrid.getItemAt(i,0).en+"TRANS: "+acDataGrid.getItemAt(i,0).translation); 
// the values are different! 
       i++; 
      } 
      dgMT.dataProvider=acDataGrid;//setting the dataProvider   

     } 

我怎麼能達到這個DataGrid的行充滿了正確的價值觀? 謝謝!

回答

1

你實例o只是一次,for循環之外。這意味着您只需更改該實例屬性的值並反覆將相同實例添加到數據提供者。您應該在每次迭代中創建一個新實例。

爲了解決這個問題,只需移動的o實例化的for循環中:

for each(angol in Globals.acValues){ 
    var o:DataGridObject = new DataGridObject(); 
    ... 
} 
+0

非常感謝您!你幫了我很多! – Alex

相關問題