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

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

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

Регистрация: Jul 2006
Сообщений: 170
Question изменение itemRender'a в List'e

Проблема следующая:

Имеется компонент, хранящий переменную "isLogin" и List компонент с custom itemRender.

Код AS3:
...........
 
[Bindable]
public var isLogin:Boolean
 
<mx:List id="actList"
	itemRenderer="ActListItemRender"
	dataProvider="{dataList}"
	/>
 
...........
В самом рендере следующее:
Код AS3:
............
 
<mx:Button 
		x="111" y="31" 
		width="16" height="16" 
		styleName="playDemand" 
		enabled="{(parent.parent.parent as ActList).isLogin}"/>
 
............

Замускаем -> переменная isLogin=false -> все отображается как надо -> мы логинемся -> переменная меняется isLogin=true -> а кнопка как была enabled = false так и осталось, меняется на true, только после того как мы проскролим лист....

Почему кнопка не становится enabled = true, сразу как мы меняем значение переменной "isLogin" на true, ведь переменная "isLogin" "забиндина"?

Старый 11.02.2009, 17:53
mitado вне форума Посмотреть профиль Отправить личное сообщение для mitado Найти все сообщения от mitado
  № 2  
Ответить с цитированием
mitado

Регистрация: Dec 2007
Сообщений: 52
в таких случаях лучше инкапсулировать класс
- создать переменную внутри ItemRenderer, и назначать ее из List

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

Регистрация: Jul 2006
Сообщений: 170
Цитата:
Сообщение от mitado Посмотреть сообщение
в таких случаях лучше инкапсулировать класс
- создать переменную внутри ItemRenderer, и назначать ее из List
переменная есть, но как менять её значение из List?

Добавлено через 6 часов 25 минут
Вобщем решил я эту задачу: пришлось вносить новый параметр в базу, которая указывается dataProvider'ом в List...

Но, хотелось бы "услышать" другие варианты, решения этой задачи.

Старый 11.02.2009, 18:12
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 4  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Лучше напрямую Рендереру ничего не давать, а управлять через датаПровайдер. Но для решения вашей проблемы видно несколько способов (правда все почти корявые).

1) Пробежаться по даталисту и сменить свойство изЛогин у каждого объекта (не рендерера)
2) Сделать паблик статическую переменную в рендерере (фууу)
3) Сделать рендерер без кнопки(зачем она нам дисабленная во всех рендерерах - не красиво же) и менять его при смене изЛогин (хм)
4) Что нить более правильное.

Добавлено через 2 минуты
Вдогонку, вообще не люблю рендереры с кнопками. Лучше галочки! Тогда доступны массовые операции. Одну кнопку легче залочить.

Старый 12.02.2009, 10:17
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 5  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
А мои не рассматривали? :о(( И нашли совсем аццки брутальный...

Старый 12.02.2009, 14:05
tikhop вне форума Посмотреть профиль Отправить личное сообщение для tikhop Найти все сообщения от tikhop
  № 6  
Ответить с цитированием
tikhop

Регистрация: Jul 2006
Сообщений: 170
Цитата:
Сообщение от GBee Посмотреть сообщение
А мои не рассматривали? :о(( И нашли совсем аццки брутальный...
Цитата:
1) Пробежаться по даталисту и сменить свойство изЛогин у каждого объекта.
Как это делается? не совсем понял...

Цитата:
2) Сделать паблик статическую переменную в рендерере (фууу)
Как менять эту статическую переменную?

Цитата:
3) Сделать рендерер без кнопки(зачем она нам дисабленная во всех рендерерах - не красиво же) и менять его при смене изЛогин (хм)
Это не реально, в моем случае.

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
1) dataProvider="{dataList}"
dataList у вас кто? В принципе не важно, каждому объекту-элементу этого списка можно менять проперть (не на сервере), которая прибиндена к енаблю кнопки.

2) moiListItemRenderer.isLogin = true;

В принципе я не рассмотрел еще вероятность того что, isLogin скорее всего переменная для всего приложения, которая показывает залогинен ли юзер в этом приложении, таким образом, проще всего ее сделать статично публичной.

И еще как вариант можно попробовать при смене изЛогин проинвалидейтить лист, правда я не знаю можно ли. Тогда по идее ваш первоначальный код будет работать.

Но мне самому все это не очень нравится, как я уже говорил.

Старый 12.02.2009, 17:40
tikhop вне форума Посмотреть профиль Отправить личное сообщение для tikhop Найти все сообщения от tikhop
  № 8  
Ответить с цитированием
tikhop

Регистрация: Jul 2006
Сообщений: 170
В принципе задача и была решена, способом номер 1, просто не сразу понял, что Вы имеете ввиду...

А вот пункт номер 2, я так и не понял. покажи примером)

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

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

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


 


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


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