我到底错在了什么?尝试使用Object填充和ArrayCollection

时间:2011-03-04 18:22:03

标签: actionscript

public function capturaPermisos():ArrayCollection{
                var arrayColl:ArrayCollection = new ArrayCollection();
                for(var i:int=0; i < dataProvider.length; i++){
                    object.idModulo = dataProvider[i].idModulo;
                    object.consultar = dataProvider[i].consultar;
                    object.agregar = dataProvider[i].agregar;
                    object.modificar = dataProvider[i].modificar;
                    object.eliminar = dataProvider[i].eliminar;
                    arrayColl[i].addItem(object);
                }
                return arrayColl;
            }

dataProvider来自数据网格,因此是循环。该对象在函数外部全局声明。

for each(var per:Object in adgPermisos.dataProvider)
                {
                    permiso.idModulo = per.idModulo;
                    permiso.consultar = per.consultar;
                    permiso.agregar = per.agregar;
                    permiso.modificar = per.modificar;
                    permiso.eliminar = per.eliminar;
                    permisos.addItem(permiso);
                }

第二个循环完全相同的错误结果。

它将我的dataprovider的最后一个注册表保存在arraycollection的所有3行中(dataprovider.length为3)

我的dataProvider也是一个arrayCollection,但它与填充我的Datagrid的Arrcooll不同。当我想将数据发送到服务器时,我的数据网格中的复选框添加了不同的值,并且渲染的arrayCollection与填充数据网格时的不同。

我只想填充另一个arrayCollection,将其发送到我的java webservice,就像这样;

1 个答案:

答案 0 :(得分:1)

“它将我的dataprovider的最后一个注册表保存在arraycollection的所有3行中”:你可能在循环中引用相同的对象[permiso] 3次。因此,您将此相同对象添加3次,然后再次更改此同一对象3次。 (因此,permisos中的所有3个条目都包含相同的对象permiso,已被更改3次)。请尝试以下代码来解决此问题:

         for each(var per:Object in adgPermisos.dataProvider)
            {
                var newItem : Object = ObjectUtil.clone(permiso);
                newItem.idModulo = per.idModulo;
                newItem.consultar = per.consultar;
                newItem.agregar = per.agregar;
                newItem.modificar = per.modificar;
                newItem.eliminar = per.eliminar;
                permisos.addItem(newItem);
            }

for each(var per:Object in adgPermisos.dataProvider) { var newItem : Object = ObjectUtil.clone(permiso); newItem.idModulo = per.idModulo; newItem.consultar = per.consultar; newItem.agregar = per.agregar; newItem.modificar = per.modificar; newItem.eliminar = per.eliminar; permisos.addItem(newItem); }