我有一个填充'o'对象的ArrayCollection。此AC应该是DataGrid的dataProvider。设置dp:dgMT.dataProvider=acDataGrid
后,DataGrid仅包含arrayCollection的最后一项。
代码:
[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的行填充了正确的值? 谢谢!
答案 0 :(得分:1)
您只在o
循环之外实例化for
一次。这意味着您只需更改该实例属性的值,并将该实例同时添加到数据提供者中。您应该在每次迭代时创建一个新实例。
要解决此问题,只需在o
循环内移动for
的实例化:
for each(angol in Globals.acValues){
var o:DataGridObject = new DataGridObject();
...
}