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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.07.2010, 12:22
Alex_YAROST_22 вне форума Посмотреть профиль Отправить личное сообщение для Alex_YAROST_22 Найти все сообщения от Alex_YAROST_22
  № 1  
Ответить с цитированием
Alex_YAROST_22
[+1.3 18.03.10]

Регистрация: Mar 2010
Сообщений: 45
По умолчанию Тупиковая ситуация ItemRender должен являтся контролом данных, которые отображает.

Привет всем, ситуация такая. Есть DataGrid в котором используются простой ItemRender вот такого вида:

Код:
<mx:DataGridColumn headerText="AIR" dataField="isOnAir" visible="false" width="30">
	<mx:itemRenderer>
		<mx:Component>
         		<mx:CheckBox enabled="false" width="23" height="22" selected="data.isOnAir">
                        </mx:CheckBox>										
                 /mx:Component>
         </mx:itemRenderer>
</mx:DataGridColumn>
Как видите поле DataProvider называемое isOnAir забиндено на компонент CheckBox. Ну какбы типичный ItemRender.

Теперь собственно тупик - нажатие на ЧекБокс приводит к изменению данных в ДатаПровайдере и, соответственно изменяется внешний вид компонента (появляется галочка) автоматом. Однако мне надо, чтобы при нажатии происходили некоторые действия, в результате которых галочка либо ставилась, либо нет.

Максимум, что я придумал это отказаться от ItemRendera, добавить CheckBox как контрол, при нажатии, если вдруг нельзя совершать это действие - возвращать компонент в предыдущее состояние (selected = false) и как-то реализовывать синхронизацию DataProvider'а и компонент CheckBox в списке.
Выглядит это всё в теории совершенно ужастно и криво

Если вы сможете что-нить подсказать, буду благодарен.
Спасибо.

Старый 15.07.2010, 13:26
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 2  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Почему нажатие на ЧекБокс приводит к изменению данных в ДатаПровайдер? У тебя просто рендерер, а не эдитор. И для твоей цели тебе надо подписаться на соответствующее событие в чекбоксе и в нем проверять - ставить галочку или нет.

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

Регистрация: Jun 2010
Адрес: Беларусь, Гродно
Сообщений: 58
Попробуй оберни checkbox в Box, тогда в него не будут сетиться данные из dataProvider'a

Попробуй на Checkbox на ивент change повесить свою функцию которая будет или не будет менять данные в датапровайдере, а заодно ставить или убирать галочку.
Код AS3:
change="selected=checkSelected(data);data.isOnAir=selected;"
Или что-то в таком духе.
если тебе нужно просто отобразить данные из датапровайдера, то можешь сделать так:
Код AS3:
selected="getSelectedState(data)"

Старый 15.07.2010, 14:59
Alex_YAROST_22 вне форума Посмотреть профиль Отправить личное сообщение для Alex_YAROST_22 Найти все сообщения от Alex_YAROST_22
  № 4  
Ответить с цитированием
Alex_YAROST_22
[+1.3 18.03.10]

Регистрация: Mar 2010
Сообщений: 45
Волгоградец

попытался подписаться change="someFunction();" указав public процедуру из файла класса .as

в ответ ругается на

1180: Вызов предположительно неопределенного метода onCheckBoxInUserListHandler. 2NETS/src myWowApp.mxml line 48

т.е. он её не видит

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

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Ну дык там хитро все. Ты создал инлайн рендерер - соответственно скрипт должен быть внутри <mx:Component></mx:Component>.
Да, или см. следующий пост.


Последний раз редактировалось Волгоградец; 15.07.2010 в 15:18.
Старый 15.07.2010, 15:11
alexberkut вне форума Посмотреть профиль Отправить личное сообщение для alexberkut Найти все сообщения от alexberkut
  № 6  
Ответить с цитированием
alexberkut

Регистрация: Jun 2010
Адрес: Беларусь, Гродно
Сообщений: 58
тебе нужно писать
Код AS3:
outerDocument.someFunction();

Старый 15.07.2010, 17:27
Alex_YAROST_22 вне форума Посмотреть профиль Отправить личное сообщение для Alex_YAROST_22 Найти все сообщения от Alex_YAROST_22
  № 7  
Ответить с цитированием
Alex_YAROST_22
[+1.3 18.03.10]

Регистрация: Mar 2010
Сообщений: 45
всем спасибо за помощь, ситуация прояснилась

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

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

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


 


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


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