0

「o」オブジェクトで満たされた ArrayCollection があります。この AC は、DataGrid の dataProvider である必要があります。dp を設定した後: dgMT.dataProvider=acDataGridDataGrid には、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 の行が正しい値で満たされていることをどのように確認できますか? ありがとうございました!

4

1 に答える 1

1

ループoの外で一度だけインスタンス化しています。forつまり、そのインスタンスのプロパティの値を変更し、同じインスタンスをデータプロバイダーに何度も追加するだけです。代わりに、反復ごとに新しいインスタンスを作成する必要があります。

これを修正するには、単純に のインスタンス化をループo内に移動します。for

for each(angol in Globals.acValues){
    var o:DataGridObject = new DataGridObject();
    ...
}
于 2012-09-13T14:32:48.757 に答える