DataGrid不适合dataProvider值



我有一个ArrayCollection,里面填充了'o'对象。此AC应该是DataGrid的数据提供程序。设置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的行填充正确的值?非常感谢。

您只在for循环之外实例化了o一次。这意味着您只需更改该实例属性的值,并将同一实例一次又一次地添加到数据提供程序中。相反,您应该在每次迭代中创建一个新实例。

要解决此问题,只需在for循环中移动o的实例化:

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

相关内容

  • 没有找到相关文章

最新更新