Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   ItemRenderer в Tree (http://www.flasher.ru/forum/showthread.php?t=104287)

Захаров 22.11.2007 12:37

ItemRenderer в Tree
 
добавил в Tree ItemRenderer в виде CheckBox как теперь получить айтимы с отмеченными CheckBox ?

john_rico 28.11.2007 12:43

может это поможет
http://www.dgrigg.com/samples/flex/c...xitemrenderer/

Sneg 28.11.2007 17:31

Если добавили и все работает как нужно - значит они изменяют какие-то данные (если это checkBox, то наверника этот параметр может принимать только два значения). Соотвественно получить элементы можно пробежав по dataProvider' у и выбрав элементы с нужным параметром.
Если itemRenderer работает правльно, то задача тревиальная :)

Захаров 29.11.2007 11:42

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

Sneg 30.11.2007 00:08

Мне кажется это верный подход, компоненты это view и предоставляют удобный способ изменения данных и просто отображают их. Пробежаться то конечно можно, но не по всем т.к. метод indexToItemRenderer вернет render'er только при условии что он виден на экране в текущий момент - а это, как мне кажется, уже заведомо неверное решение данной задачи :)

Захаров 30.11.2007 12:50

c проходом по только видимым конечно же не желаемый способ но сдруго стороны представим себе что несколько компонент начинают редактировать бедный источник данных что с ним будет страшно подумать =)

__i 30.11.2007 15:32

Как это нужно сделать на практике


1. Делаешь класс описывающий нужный элемент в твоем датапровайдере (MyDataVO), с биндабл полями (или полностю биндабл)

2. Делаешь от него наследника и в нем вводишь поле selected для чекбокса( MyDataVOWithSelection extends MyDataVO), оно должно быть биндабл

3. при получении/генерации данных пихаешь их в класс MyDataVOWithSelection, и хранишь их всех в каком нить Collection

4. Подписываешься на событие CollectionEvent.COLLECTION_CHANGE у своего Collection, и читаешь хелп по поводу CollectionEventKind.UPDATE

5. Делаешь айтем рендер с чек боксом который отвечает за сотояние selected у твоих элементов, при изменении его меняешь свойство данного элемента.

6. В обработчике CollectionEvent.COLLECTION_CHANGE ты ловишь измененый элемент и считаешь/вычеркиваешь его.


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

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