Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Динамическое изменение itemRenderer (http://www.flasher.ru/forum/showthread.php?t=125490)

BregoXX 25.05.2009 17:58

Динамическое изменение itemRenderer
 
Есть TileList. у него есть itemRenderer. TileList генерит событие, при котором надо, чтобы в itemRenderer перестал отображаться один компонент - CheckBox.
Это реально сделать? и как?)

†‡Paladin‡† 25.05.2009 18:48

Нельзя работать напрямую с айтемрендерером.
Поэтому нужно сделать следующее:
1) В данных добавить каждому значению флажок checkBoxFlag:Boolean = true;
2) в айтемрендерере забайндить visible чекбокса на флажок
3) Тайллист пускай ставит checkBoxFlag в данных на false.

BregoXX 25.05.2009 19:29

Цитата:

Нельзя работать напрямую с айтемрендерером.
Поэтому нужно сделать следующее:
1) В данных добавить каждому значению флажок checkBoxFlag:Boolean = true;
2) в айтемрендерере забайндить visible чекбокса на флажок
3) Тайллист пускай ставит checkBoxFlag в данных на false.
Уточню немного.
В данных поле такое есть и оно используется.
У меня один итемРендерер на два view - пользовательский и админовский.
У админа отображается чек бокс и он может менять поле обьекта из датапровайдера.
А когда заходит пользователь, то чек бокс надо сделать невидимым.
И у админа есть кнопка при клике - меняет итем рендерер с админовского вью на пользовательский и назад.

†‡Paladin‡† 25.05.2009 20:19

Ну и что мешает при смене вида менять флаг? Второй вариант менять айтемрендерер, но он бредовый.

BregoXX 25.05.2009 23:41

флаг юзается для других целей просто.
Добавить ещё одно поле тоже плохо.
А как сменить айтемРендерер?

GBee 26.05.2009 08:10

list.itemRenderer = new ClassFactory(ItemRendererSGalochkoi);

Как вариант сделать статическое свойство у рендерера и на него забиндить чекбокс.

BregoXX 26.05.2009 10:58

Цитата:

list.itemRenderer = new ClassFactory(ItemRendererSGalochkoi);
Угук. подошло)
А про статическое поле не понял мысли..

†‡Paladin‡† 26.05.2009 19:02

Цитата:

Сообщение от BregoXX (Сообщение 823162)
Угук. подошло)
А про статическое поле не понял мысли..

Это очень плохой способ. Вместо того, чтобы отдиспатчить событие и скрыть ненужные кнопки, мы пересоздаем полностью все айтемы, что заставляет флекс пересоздавать все заново, удалять старые объекты и перерасчитывать весь лэйаут. Про статическое поле я тоже чет не понял мысли.

GBee 26.05.2009 22:25

Эх это тоже тот еще способ, который я использовал один раз из-за лени.

Делаете у рендерера статическую проперть
Код AS3:

[Bindable]
public static var showCheckBox:Boolean = true;
 
bla-bla
 
<mx:CheckBox visible="{showCheckBox}" />


BregoXX 27.05.2009 10:40

Цитата:

Это очень плохой способ. Вместо того, чтобы отдиспатчить событие и скрыть ненужные кнопки, мы пересоздаем полностью все айтемы, что заставляет флекс пересоздавать все заново, удалять старые объекты и перерасчитывать весь лэйаут. Про статическое поле я тоже чет не понял мысли.
Эт ясно, что плохо.
Есть такая структура
Код AS3:

 
<mx:VBox id = "myContainer">
<pageheader:PageHeader id = "pageHeader"
                          visible = "false"
                          facade = "{facade}"/>
    <documentlist:DocumentList id = "documentList"
                              visible = "false"
                              facade = "{facade}"/>
</mx:VBox>

pageHeader диспатчит событие нажатия на свой баттон. В myContainer я добавил слушателя для пейджХедара для этого события. Но как дальше обратиться к итемРендеру ТайтлЛиста, который вложен в documentList?
documentList представляет из себя следующее
Код AS3:

<?xml version = "1.0" encoding = "utf-8"?>
<documentlist:DocumentListLogic xmlns:documentlist = "de.dts.isy3suite.plugin.bcspecificpage.documentlist.logic.*"
                                xmlns:pageswitcher = "de.dts.isy3suite.plugin.bcspecificpage.documentlist.pageswitcher.*"
                                xmlns:view="de.dts.isy3suite.plugin.bcspecificpage.documentlist.view.*"
                                xmlns:mx = "http://www.adobe.com/2006/mxml"
                                creationComplete = "onCreationComplete();"
                                width = "750"
                                height = "100%">
 
    <pageswitcher:PageSwitcher gotoFirstClick = "selectPage(event)"
                              gotoLastClick = "selectPage(event)"
                              gotoNextClick = "selectPage(event)"
                              gotoPreviousClick = "selectPage(event)"
                              curPage = "{curPage}"
                              totalPages = "{totalPages}"/>
    <view:BCTileList id = "documentList"
                            styleName="bcTileListStyle"
                                height = "100%"
                                width = "100%"
                minHeight="40"
                selectable = "true"
                doubleClickEnabled = "false"
                itemClick = "showDocumentVersion(event)"
                dataProvider = "{documentVesions}"
                itemRenderer = "DocumentVersionAdminItemRender">
    </view:BCTileList>
</documentlist:DocumentListLogic>

Цитата:

Эх это тоже тот еще способ, который я использовал один раз из-за лени.

Делаете у рендерера статическую проперть
Как потом к этой проперти обратиться из вне?


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

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