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

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

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

Регистрация: Mar 2008
Адрес: Moscow
Сообщений: 311
Отправить сообщение для BeDLiNt с помощью ICQ Отправить сообщение для BeDLiNt с помощью Skype™
По умолчанию CheckBox в DataGrid

Использую кастомный итемрендерер для колонки в DataGrid-е RendererDGCheckBox.mxml :
Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="40" 
	implements="mx.controls.listClasses.IDropInListItemRenderer">
		<mx:CheckBox verticalCenter="0" horizontalCenter="0" scaleX="2" scaleY="2"
			selected="{data[DataGridListData(listData).dataField]=='true' ? true:false}"/>
<mx:Script>
	<![CDATA[
		import mx.controls.listClasses.BaseListData;
		import mx.controls.DataGrid;
		import mx.controls.Alert;
		
		import mx.controls.dataGridClasses.DataGridListData;

		private var _listData:BaseListData = null;

		[Bindable(event="dataChange")]
		public function get listData():BaseListData {
			return _listData;
		}

		public function set listData (value:BaseListData):void {
			_listData = value;
		}

]]>
</mx:Script>
</mx:Canvas>
Галочки ставятся, однако изменений в провайдере (XMLList) конечно же не происходит. Как грамотнее релизовать это?
__________________
2+2=5

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

Регистрация: Sep 2007
Сообщений: 32
Для этих целей рекомендую всегда переопределять свойство data
Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100%">
<mx:Script>
    <![CDATA[
        
    override public function set data(value: Object): void {
        if(value != null) {
            super.data = value;
            checkBox.selected = value.checked;
        }
    }
    
    private function onChange(event: Event): void {
        super.data.checked = checkBox.selected;
    }
        
    ]]>
</mx:Script>
    <mx:CheckBox id="checkBox" change="onChange(event)"/>
</mx:Canvas>


Последний раз редактировалось sangle; 15.10.2008 в 17:54. Причина: Добавление комментария в ответе автору.
Старый 15.10.2008, 18:40
sangle вне форума Посмотреть профиль Отправить личное сообщение для sangle Найти все сообщения от sangle
  № 3  
Ответить с цитированием
sangle

Регистрация: Sep 2007
Сообщений: 32
Если же тебе нужно более универсальное решение (в отличие от предыдущего решения, где было известно, что значение хранится в свойстве checked), то вот расширенный пример.
Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas
    xmlns:mx="http://www.adobe.com/2006/mxml"
    implements="mx.controls.listClasses.IDropInListItemRenderer">
<mx:Script>
<![CDATA[
    import mx.controls.dataGridClasses.DataGridListData;
    import mx.controls.listClasses.BaseListData;
    
    override public function set data(value: Object): void {
        if(value != null) {
            super.data = value;
            var fieldName: String = DataGridListData(listData).dataField;
            checkBox.selected = value[fieldName];
        }
    }
    
    private var _listData:BaseListData = null;

    [Bindable(event="dataChange")]
    public function get listData():BaseListData {
        return _listData;
    }
    
    public function set listData (value:BaseListData):void {
        _listData = value;
    }
    
    private function onChange(event: Event): void {
        var fieldName: String = DataGridListData(listData).dataField;
        super.data[fieldName] = checkBox.selected;
    }
]]>
</mx:Script>
    <mx:CheckBox id="checkBox" change="onChange(event)"/>
</mx:Canvas>

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

Регистрация: Mar 2008
Адрес: Moscow
Сообщений: 311
Отправить сообщение для BeDLiNt с помощью ICQ Отправить сообщение для BeDLiNt с помощью Skype™
Спасиб. Второе то что нужно. Единственно пришлось заменить
Код:
 checkBox.selected = value[fieldName];
на
Код:
value[fieldName]==true ? checkBox.selected=true:checkBox.selected=false;
т.к. в XMLList нет типизации.
__________________
2+2=5

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

Регистрация: Sep 2007
Сообщений: 32
А так не читабельнее?
Код:
checkBox.selected = value[fieldName]==true;
А вообще бы я использовал значения 0 и 1. Это очень удобно при передаче данных и позволяет не зависеть от коллекции и способах ее наполнения при передаче данных от внешних источников.

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

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

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


 


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


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