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

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

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

Регистрация: Nov 2009
Сообщений: 11
По умолчанию Работа с отдельными ячейками DataGrid

Помогите пожалуйста а то уже целую неделю не могу решить задачу которая состоит в следующем: Нужно динамически рисовать таблицу где в каждой ячейке был бы radiobutton. Радиобатоны в строке должны принадлежать к одной группе (хотя сойдет даже и в одном столбце). То-есть в разных строках выбор пользователем должен делаться независимо. Перерыл много адобовской доки где написано что пользовательское переопределение содержимого ячеек делается с помощью написания пользовательского класса который должен инкапсулировать интерфейс ICellRenderer и наследовать UICOmponent с последующим присвоением класса свойству CellRenderer у DataGridColumn. http://www.adobe.com/devnet/flash/qu...pt3/#section14
Но этот путь заводит в тупик поскольку, невозможно одним пользовательским классом (например
Код AS3:
var dataCol:DataGridColumn = new DataGridColumn("data");
dataCol.cellRenderer = LoaderCellRenderer; var titleCol:DataGridColumn = new DataGridColumn("title");
titleCol.cellRenderer = LoaderCellRenderer;
) присвоить радиобатонам в разных ячейках одной строки разные например label поскольку елемент из масива или датапровайдера применяется один для всех ячеек одной строки. То-есть если мы добавляем в провайдер dp.addItem({data:"gr1", title:"choice1"}); то одни и те же значения свойств применяются и к ячейке из колонки data и к ячейке из колонки title.
Что касается применения разных класов для каждой колонки
Код AS3:
var dataCol:DataGridColumn = new DataGridColumn("data");
dataCol.cellRenderer = LoaderCellRenderer; var titleCol:DataGridColumn = new DataGridColumn("title");
titleCol.cellRenderer = LoaderCellRenderer2;
то это тоже не применимо по двух причинах:
-Во первых данные формируются динамически и я не могу знать наперед количества строк и столбцов
-во вторых если пользователь кликнет на определенном радиобатоне то обязательно выбранными станут остальные радиобатоны в той же строке в силу того, что Datagrid по щелчку выделяет целый item которому соответствует вся строка.
Как сделать так чтобы отдельно можно было присваивать значения каждой ячейке и соответственно щелчек приводил бы к выбору(selected) одной ячейки а не целой строки?

Старый 08.04.2010, 00:09
Max Stone вне форума Посмотреть профиль Отправить личное сообщение для Max Stone Найти все сообщения от Max Stone
  № 2  
Ответить с цитированием
Max Stone

Регистрация: Mar 2009
Сообщений: 7
Если еще не поздно, то решение вашей проблемы в переопределении set метода параметра selected у LoaderCellRenderer. Так как при нажатии на строку этот параметр у всех ячеек этой строки становится true; А так как ваша ячейка скорей всего унаследована от радиобатона, то соответственно и ему устанавливается true.

Пример такой

Код AS3:
override public function get selected():Boolean {
            return _selected;
        }
 
override public function set selected(value:Boolean):void{}
А чтобы радиобатон реагировал на нажатие в конструкторе класса LoaderCellRenderer
вешаем слушателя на нажатие мыши:

Код AS3:
public function LoaderCellRenderer()
        {
            ...
            addEventListener(MouseEvent.CLICK, onCheckClick);			
        }
 
public function onCheckClick(e:MouseEvent)
        {
            _selected = !_selected;
            _data["selected"] = _selected;
        }
Таким образом у меня все заработало.

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

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

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


 


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


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