Flex DataGrid предотвращает автоматическое применение фильтра - PullRequest
1 голос
/ 04 января 2011

Чтобы определить положение вещей, я работаю над утилитой перевода с сеткой данных, имеющей 3 столбца: код перевода, справочный текст и целевой текст.

Свойство dataProvider объекта DataGrid связано с экземпляром ArrayCollection.Пользователь может редактировать сетку, и при успешном редактировании базовая коллекция обновляется с помощью метода setItemAt ().Коллекция также имеет функцию фильтра, облегчающую поиск определенных текстов.

Когда пользователь нажимает кнопку «применить фильтр», функция фильтра обновляется.Это хорошо работает.У меня проблема в том, что строки скрываются, как только базовый элемент коллекции изменяется таким образом, который не соответствует фильтру.Строка скрыта сразу, что не очень удобно для пользователя.Строки должны скрываться (или отображаться) только при нажатии кнопки «Применить фильтр».

Я ищу способ сделать это.

Ответы [ 2 ]

0 голосов
/ 07 января 2011

Спросив и осмотревшись, я обнаружил, что реального способа сделать это не существует.Однако я решил свою проблему, выполнив фильтрацию сам и сохранив только список «первичных ключей».Затем я использую этот список для фильтрации коллекции.

В результате строки не могут внезапно исчезнуть при изменении записей, что я и хотел.

0 голосов
/ 04 января 2011

Полагаю, вы имеете в виду, что dataProvider DataGrid связан с экземпляром ArrayCollection?

В любом случае, если вы хотите отфильтровать dataProvider в DataGrid, тогда он удалит строки из DataGrid.Вы можете удалить фильтр, чтобы добавить их обратно. Что-то, концептуально подобное:

collection.filterFunction = null;
collection.refresh();

Если вы используете dataProvider в качестве источника для нескольких компонентов, вы можете разделить фильтрацию, используя другой ListCollectionView.для каждого, но с тем же источником.Примерно так:

component1.dataProvider = ListCollectionView(mySource);
component1.dataProvider = ListCollectionView(mySource);

Теперь применение фильтра к одному провайдеру данных не повлияет на другой.
Если это не поможет, вам нужно подробнее разобраться с возникшей проблемой ивозможно предоставьте пример кода.

...