Что именно я здесь делаю не так? Попытка заполнить и ArrayCollection с объектом

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

Второй цикл делает точно такой же неправильный результат.

Сохраняет последний реестр моего провайдера данных во всех 3 строках массива коллекции (длина dataprovider.length равна 3)

Мой dataProvider тоже массив arrayCollection, но это не тот же Arrcooll, который заполняет мой Datagrid. Когда я хочу отправить свои данные на сервер, в мою сетку данных добавляются различные значения из флажков, и рендеринг arrayCollection отличается от того, который был при заполнении сетки данных.

Я просто хочу заполнить другую коллекцию arrayCollection, чтобы отправить ее на мой веб-сервис java следующим образом;

1 ответ

Решение

"Это сохраняет последний реестр моего поставщика данных во всех 3 строках массива коллекции": вы, вероятно, ссылаетесь на один и тот же объект [permiso] в цикле 3 раза. В результате вы добавляете один и тот же объект 3 раза и снова меняете этот же объект 3 раза. (В результате все 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);
            }

Другие вопросы по тегам