Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.04.2010, 18:09
bw_left вне форума Посмотреть профиль Отправить личное сообщение для bw_left Найти все сообщения от bw_left
  № 1  
Ответить с цитированием
bw_left

Регистрация: Apr 2010
Сообщений: 16
По умолчанию Как отфильтровать List не затрагивая dataProvider?

если dataProvider представлен каким-нибудь collection у него действительно есть filterFunction, но вот возникла такая ситуация:

создаем новую группу, в списке групп она ессно появляется, но вот пока от сервера не получен ID этой группы (по сути пока она не появиться в БД на стороне сервера) нельзя чтобы она отображалась как доступная в списке групп при создании пользователя. источник dataProvider для всех, кто использует эту группу, ессно один, и поэтому отфильтровать эту группу на уровне dataProvider мы не можем. Как лишней крови отфильтровать на уровне самого List.

У List есть ItemRenderer ... вот если бы его где-нить на входе воткнуть "return false" и он пропустил бы этот элемент ..... но я такого способа не знаю

Добавлено через 29 минут
Можно конечно создать отдельный Collection на основании исходного и фильтровать его, но придется делать дополнительную связку, которая будет обновлять этот клон ... наверное

Старый 09.04.2010, 08:25
BeDLiNt вне форума Посмотреть профиль Отправить личное сообщение для BeDLiNt Найти все сообщения от BeDLiNt
  № 2  
Ответить с цитированием
BeDLiNt
 
Аватар для BeDLiNt

Регистрация: Mar 2008
Адрес: Moscow
Сообщений: 311
Отправить сообщение для BeDLiNt с помощью ICQ Отправить сообщение для BeDLiNt с помощью Skype™
Добавляйте новую группу в вашу коллекцию после того как прийдет result от сервера о удачном добавлении с id-шником элемента.
__________________
2+2=5

Старый 09.04.2010, 10:49
bw_left вне форума Посмотреть профиль Отправить личное сообщение для bw_left Найти все сообщения от bw_left
  № 3  
Ответить с цитированием
bw_left

Регистрация: Apr 2010
Сообщений: 16
немного не то ...

еще раз поясню друими словами и схемкой:

источник групп для списка отображения самих групп и для списка выбора групп у пользователя - один! Но пока группа не сохраниться на сервере (т.е. ее id будет 0) она не должна быть доступна у пользователей. Фильтровать на уровне общего AC нельзя - группа пропадет из обоих UI List. Создавать для GroupsList (DDL) отдельный AC очень не хочется ... случай не единичный - хочется грамотное решение на будущее.
Изображения
 

Старый 09.04.2010, 20:50
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Не совсем правильное представление о том, что есть collections во фреймворке. Они на самом деле collection view т.е. отображение даты после сортировки, фильтрации и т.п. Так что это нормально отфильтровать один вью реальной колекции и отдать этот вью одному компоненту, и с другими настройками его же отдать другому компоненту. С другой стороны, техническая сторона реализации этого дела оставляет желать много лучшего.
http://livedocs.adobe.com/flex/3/lan...filterFunction
Вот, собственно, чем предлагается фильтровать вью коллекции во фреймворке, но, я даже не знаю, я их просто на столько не люблю, что просто писал бы полностью свое с нуля.
__________________
Hell is the possibility of sanity

Старый 09.04.2010, 21:05
bw_left вне форума Посмотреть профиль Отправить личное сообщение для bw_left Найти все сообщения от bw_left
  № 5  
Ответить с цитированием
bw_left

Регистрация: Apr 2010
Сообщений: 16
мне во фреймворке много что не нравиться - особенно реализация Tree - руки бы оборвать ... но переписывать с нуля - времени нет (((

Насчет коллекций - как я понял из всего прочитанного в Reference, Collections все таки служат больше не для view а для отслеживания изменений производимых над коллекцией, но не берусь это утверждать ибо опыта маловато будет (за что купил, за то продаю - все вопросы к Reference) ... НО!!! допускаю, что и для sort + filtering в том числе

Из опыта могу сказать, что тот же XML вообще можно в коллекцию не оборачивать - он каким-то магическим образом сам всех информирует об произошедших в нем изменениях .. причем о любых - много с тестами игрался, был приятно удивлен.

Возвращаясь к вопросу - так как отменить ItemRenderer для некой записи? (если это вообще возможно) ООО!!!! А еще круче подменить его - вообще роскошно было бы!!! .. и было бы всем счастье и не былоб войны

Старый 09.04.2010, 21:11
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну дык, передали функцию типа:
Код AS3:
function filterBadObjects(object:Object):Boolean { return object is BadObject; }
И все плохие объекты не попадут во вью.
XML может информировать об изменениях если вы используете XML#notification() / XML.setNotofications(func:Function). Но если вы этот XML уже используете во фреймворковском проекте, то не делайте этого, т.как извещения могут высылаться только одному подписчику, и если вы используете эту возможность, вы, тем самым отпишите этот XML от всех биндингов которые к нему были добавлены.
__________________
Hell is the possibility of sanity

Старый 09.04.2010, 21:16
bw_left вне форума Посмотреть профиль Отправить личное сообщение для bw_left Найти все сообщения от bw_left
  № 7  
Ответить с цитированием
bw_left

Регистрация: Apr 2010
Сообщений: 16
тут подумал вот что:

для List источником в dataProvider является видимо что-то внутри Коллекции ... я просто не разбирался что именно (отфильтрованные данные где-то ведь лежат)

Посему - можно расширить AC и прикрутить к нему механизм, который просто для каждого List будет подсовывать необходимый отфильтрованый "source". Как сделать - пока не думал - но сама концепция мне пока нравиться. Переопределение фильтрации и сортировки - задача достаточно тривиальная и безкровная мне кажется ))

Старый 10.04.2010, 14:01
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 8  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну так это уже сделано в ListCollectionView... А когда вы назначаете провайдера, то если он не является вью коллекции, то компонент его сам оборачивает в этот вью. Хотя, опять же, как на мой взгляд, такой подход излишне замороченый, но, если мы говорим о фреймворковских компонентах, и нам их обязательно использовать, то он там уже есть. На мой взгляд, это мнимое удобство, которое в итоге приведет к тому, что систему будет тяжело поддерживать и всяким разным дтугим конфликтам и непоняткам. Лучше просто выдать каждому компоненту по коллекции - так будет проще, следовательно, меньше багов и другого рода непоняток.
__________________
Hell is the possibility of sanity

Создать новую тему Ответ Часовой пояс GMT +4, время: 06:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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