2011-03-04 75 views
0
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来自数据网格,因此是循环。该对象在funcion之外全局声明。我在这里做错了什么?尝试使用对象填充和ArrayCollection

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); 
       } 

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

它可以节省我的数据提供程序的最后一个注册表中的所有3条线中的ArrayCollection的(在DataProvider.length的是3)

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

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

回答

1

“它在arraycollection的所有3行中保存了我的数据提供者的最后一个注册表”:您可能在循环中引用同一对象[permiso] 3次。因此,您添加同一个对象3次,并且您再次更改同一个对象3次。 (因此,你的permisos中的所有3个条目都包含相同的对象,其已经更改了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); 
      } 

+0

我忘了提及该对象是在函数之外声明的。哦,dataprovider.length是一个翻译错误,我忘了粘贴那个。 – overmann 2011-03-04 18:32:28

+0

您是否多次添加相同的对象?你也应该改变** arrayColl [i] .addItem(object); **到** arrayColl.addItem(object); **。您可能会考虑的另一件事是,不要从dataProvider克隆对象,您可以将[dataProvider]直接设置为arrayColl。 (例如,如果dataProvider的类型为Array,则可以将其设置为** arrayColl.source = dataProvider; **) – 2011-03-04 19:35:01

+0

请参阅我的原始问题。 – overmann 2011-03-04 20:45:54

相关问题