|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Apr 2010
Сообщений: 16
|
Как отфильтровать List не затрагивая dataProvider?
если dataProvider представлен каким-нибудь collection у него действительно есть filterFunction, но вот возникла такая ситуация:
создаем новую группу, в списке групп она ессно появляется, но вот пока от сервера не получен ID этой группы (по сути пока она не появиться в БД на стороне сервера) нельзя чтобы она отображалась как доступная в списке групп при создании пользователя. источник dataProvider для всех, кто использует эту группу, ессно один, и поэтому отфильтровать эту группу на уровне dataProvider мы не можем. Как лишней крови отфильтровать на уровне самого List. У List есть ItemRenderer ... вот если бы его где-нить на входе воткнуть "return false" и он пропустил бы этот элемент ..... но я такого способа не знаю Добавлено через 29 минут Можно конечно создать отдельный Collection на основании исходного и фильтровать его, но придется делать дополнительную связку, которая будет обновлять этот клон ... наверное |
|
|||||
Добавляйте новую группу в вашу коллекцию после того как прийдет result от сервера о удачном добавлении с id-шником элемента.
__________________
2+2=5 |
|
|||||
Регистрация: Apr 2010
Сообщений: 16
|
немного не то ...
еще раз поясню друими словами и схемкой: источник групп для списка отображения самих групп и для списка выбора групп у пользователя - один! Но пока группа не сохраниться на сервере (т.е. ее id будет 0) она не должна быть доступна у пользователей. Фильтровать на уровне общего AC нельзя - группа пропадет из обоих UI List. Создавать для GroupsList (DDL) отдельный AC очень не хочется ... случай не единичный - хочется грамотное решение на будущее. |
|
|||||
Modus ponens
|
Не совсем правильное представление о том, что есть collections во фреймворке. Они на самом деле collection view т.е. отображение даты после сортировки, фильтрации и т.п. Так что это нормально отфильтровать один вью реальной колекции и отдать этот вью одному компоненту, и с другими настройками его же отдать другому компоненту. С другой стороны, техническая сторона реализации этого дела оставляет желать много лучшего.
http://livedocs.adobe.com/flex/3/lan...filterFunction Вот, собственно, чем предлагается фильтровать вью коллекции во фреймворке, но, я даже не знаю, я их просто на столько не люблю, что просто писал бы полностью свое с нуля.
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Apr 2010
Сообщений: 16
|
мне во фреймворке много что не нравиться - особенно реализация Tree - руки бы оборвать ... но переписывать с нуля - времени нет (((
Насчет коллекций - как я понял из всего прочитанного в Reference, Collections все таки служат больше не для view а для отслеживания изменений производимых над коллекцией, но не берусь это утверждать ибо опыта маловато будет (за что купил, за то продаю - все вопросы к Reference) ... НО!!! допускаю, что и для sort + filtering в том числе Из опыта могу сказать, что тот же XML вообще можно в коллекцию не оборачивать - он каким-то магическим образом сам всех информирует об произошедших в нем изменениях .. причем о любых - много с тестами игрался, был приятно удивлен. Возвращаясь к вопросу - так как отменить ItemRenderer для некой записи? (если это вообще возможно) ООО!!!! А еще круче подменить его - вообще роскошно было бы!!! .. и было бы всем счастье и не былоб войны |
|
|||||
Modus ponens
|
Ну дык, передали функцию типа:
И все плохие объекты не попадут во вью. XML может информировать об изменениях если вы используете XML#notification() / XML.setNotofications(func:Function). Но если вы этот XML уже используете во фреймворковском проекте, то не делайте этого, т.как извещения могут высылаться только одному подписчику, и если вы используете эту возможность, вы, тем самым отпишите этот XML от всех биндингов которые к нему были добавлены.
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Apr 2010
Сообщений: 16
|
тут подумал вот что:
для List источником в dataProvider является видимо что-то внутри Коллекции ... я просто не разбирался что именно (отфильтрованные данные где-то ведь лежат) Посему - можно расширить AC и прикрутить к нему механизм, который просто для каждого List будет подсовывать необходимый отфильтрованый "source". Как сделать - пока не думал - но сама концепция мне пока нравиться. Переопределение фильтрации и сортировки - задача достаточно тривиальная и безкровная мне кажется )) |
|
|||||
Modus ponens
|
Ну так это уже сделано в ListCollectionView... А когда вы назначаете провайдера, то если он не является вью коллекции, то компонент его сам оборачивает в этот вью. Хотя, опять же, как на мой взгляд, такой подход излишне замороченый, но, если мы говорим о фреймворковских компонентах, и нам их обязательно использовать, то он там уже есть. На мой взгляд, это мнимое удобство, которое в итоге приведет к тому, что систему будет тяжело поддерживать и всяким разным дтугим конфликтам и непоняткам. Лучше просто выдать каждому компоненту по коллекции - так будет проще, следовательно, меньше багов и другого рода непоняток.
__________________
Hell is the possibility of sanity |
Часовой пояс GMT +4, время: 07:30. |
|
« Предыдущая тема | Следующая тема » |
|
|