PDA

Просмотр полной версии : Как отфильтровать AdvancedDataGrid


Jitakuzu
15.08.2011, 16:06
Собственно сабж

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

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

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

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

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

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

В любом случае, вы всегда можете получить доступ к неотфильтрованным данным через ListCollectionView#list (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/mx/collections/ListCollectionView.html#list).

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

Добавлено через 2 минуты
Для того что бы фильтровать данные вам нужен ArrayCollection или ListCollectionView и ListCollectionView#filterFunction (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/mx/collections/ListCollectionView.html#filterFunction).

Jitakuzu
15.08.2011, 16:46
ок, спасибо, буду разбираться.

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