Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Как отфильтровать AdvancedDataGrid (http://www.flasher.ru/forum/showthread.php?t=164290)

Jitakuzu 15.08.2011 16:06

Как отфильтровать AdvancedDataGrid
 
Собственно сабж

Только нужно фильтровать не DataProvider, а саму таблицу. То есть, визуальное ее отображение. Чтоб на экран выводились только удовлетворяющие заданным параметрам ряды.

alatar 15.08.2011 16:12

Сделать копию коллекции, установить ее в качестве dataProvider (это свойство, а не класс. Не стоит писать DataProvider) и отфильтровать. Ну, или сначала отфильтровать, а потом установить как dataProvider.

Jitakuzu 15.08.2011 16:20

Понял, с большой буквы написал - не прав.
Дело в том, что тогда, отфильтровав таблицу, если внести в нее изменения, то они не отразятся на первоначальном источнике.
К примеру:
Код AS3:

var newArr:Array = dataGrid.dataProvider.filter(filterFunc);
dataGrid.dataProvider = newArr;

Теперь все изменения будут вносится в newArr, а мне надо, чтоб не прошедшие фильтр поля тоже остались в памяти, просто не выводились на экран. То есть, я применю фильтр, внесу изменения, отключу фильтр и хочу увидеть полную таблицу, но с измененными полями. Надеюсь, понятно. Такое возможно?

alatar 15.08.2011 16:33

Функция фильтрации ничего не удаляет, только возвращает true/false для каждого элемента, если вам не важен порядок элементов в исходной коллекции, то копию делать не нужно. Если убрать фильтр, все элементы станут опять видны.

В любом случае, вы всегда можете получить доступ к неотфильтрованным данным через ListCollectionView#list.

Цитата:

var newArr:Array = dataGrid.dataProvider.filter(filterFunc);
Откуда вы взяли функцию filter возвращающую массив?

Добавлено через 2 минуты
Для того что бы фильтровать данные вам нужен ArrayCollection или ListCollectionView и ListCollectionView#filterFunction.

Jitakuzu 15.08.2011 16:46

ок, спасибо, буду разбираться.

Добавлено через 18 минут
Я в качестве dataProvider использовал Array. Поменял на ArrayCollection и все заработало. Спасибо.
Единственное, осталась одна проблема, может поможете? http://www.flasher.ru/forum/showthread.php?t=163971


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

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