Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   datagrid dataprovider refresh (http://www.flasher.ru/forum/showthread.php?t=148209)

vasyapunk 24.12.2010 06:13

datagrid dataprovider refresh
 
Здравствуйте!
У меня какая-то странная ошибка или я чего-то не доганяю...
Есть DataGrid, у него есть dataProvider="{myArrayCollection}", который Bindable..
Я заполняю myArrayCollection через пхп.. Заполнил..
Есть кнопка, при нажатии на которую должна удаляться запись из myArrayCollection и соответственно и из моего DataGrid-a..

Нажал, удалил запись через пхп.
Вытаскиваю из БД новый myArrayCollection, заполняю..И когда все должно завершиться выскакивает эта ошибка(ниже приведенная)..
Я так понял, что она изза того, что после заполнения я обновляю myArrayCollection.refresh();
Но разве так нельзя?

Код AS3:

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
        at mx.controls.listClasses::ListBase/setSelectionIndicesLoop()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:6200]
        at mx.controls.listClasses::ListBase/http://www.adobe.com/2006/flex/mx/internal::commitSelectedIndices()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:6192]
        at mx.controls.listClasses::ListBase/adjustSelectionSettings()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:3934]
        at mx.controls.listClasses::ListBase/updateDisplayList()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:3676]
        at mx.controls::List/updateDisplayList()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\controls\List.as:1003]
        at mx.controls.listClasses::ListBase/validateDisplayList()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:3281]
        at mx.managers::LayoutManager/validateDisplayList()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:602]
        at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:675]
        at Function/http://adobe.com/AS3/2006/builtin::apply()
        at mx.core::UIComponent/callLaterDispatcher2()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:8460]
        at mx.core::UIComponent/callLaterDispatcher()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:8403]

Помогите, кто с таким сталкивался пожалуйста, а то я уже часа 3 с этим мучаюсь и хз шо это такое..Раньше нормально всегда заполнял таблицы, удалял все...а тут вдруг такое..и не убирается..(

Lexxx_HU 24.12.2010 11:29

во первых не понятно ваша строка -
Цитата:

Я заполняю myArrayCollection через пхп
приведите пожалуйста код. через HTTP сервис ?
во вторых при добавлении новых записей в массив рефреш делать не нужно, при addItem датагрид сам все перерисует.
рефреш надо делать если вы пытаетесь изменить какое то значение, при этом количество записей остается тем же.
судя по вашим словам
Цитата:

Вытаскиваю из БД новый myArrayCollection, заполняю
попробуйте сначала массив.removeAll(), а потом добавлять.

и не совсем понятны задача и проблема как то все расплывчато описано. что вы хотите именно сделать ? обновить какие то данные в массиве или новые данные отрисовать в датагриде ?

vasyapunk 24.12.2010 22:28

Да, через HTTP сервис обращаюсь к пхп-файлу, отсылая ему данные Постом и получая ответ ХМЛ и заношу каждую строку как объект в переменную myArrayCollection типа ArrayCollection..
Я просто удаляю через пхп запись и загружаю массив заново и пишет эту ошибку..

А при push() тоже перерисовывает?
Так а зачем тогда refresh?
Я прочитал, что refresh просто обновляет, перерисовывает...Или я не то что-то прочитал?

vasyapunk 06.01.2011 00:12

Так немного поразбирался, но еще больше запутался..
При любом изменении dataProvider-ра выскакивает та ошибка..
Например, если попытаться удалить из моей коллекции какой либо элемент myArrayCollection.removeItemAt(5); , где этот индекс 100% заполнен и не равен null...
Не понимаю почему и как...Если у когото была похожая ситуация - помогите пожалуйста!

Lexxx_HU 11.01.2011 19:48

если можно приведите пожалуйста код, сложно так телепатически ориентироваться на словах, да еще в чужом коде

alatar 11.01.2011 20:07

Цитата:

А при push() тоже перерисовывает?
У ArrayCollection нет метода push
Цитата:

Так а зачем тогда refresh?
Он нужен для применения изменений после присвоения filterFunction или sort.
Цитата:

рефреш надо делать если вы пытаетесь изменить какое то значение, при этом количество записей остается тем же.
Для этого есть itemUpdated()

vasyapunk, вы случайно не пытаетесь выделить элемент?


Часовой пояс GMT +4, время: 04:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.