Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Свой CellRenderer, как передать параметр конструктору (http://www.flasher.ru/forum/showthread.php?t=144472)

Cher80 13.09.2010 14:34

Свой CellRenderer, как передать параметр конструктору
 
Добрый %timestamp%
Есть у меня Datagrid, и к нему класс расширяющий CellRenderer (к нему еще прилинован мувик, поэтому не пугайтесь странных переменных в классе). В конструктор этого класса я ничего не передаю:
Код AS3:

package library 
{
 
        import flash.display.MovieClip;
        import flash.display.DisplayObject;
        import fl.controls.listClasses.ICellRenderer;
        import flash.display.Loader;
        import flash.events.*;
 
 
        public class Add_words_cell extends MovieClip implements ICellRenderer
        {
                  private var _data:Object;
                  private var _listData:ListData;
                  private var _selected:Boolean;
 
                public function Add_words_cell()
                {
 
                }
 
 
                public function set data(d:Object):void {
 
                        this._data = d;
                        this.wordButt.wordText.text = _data.word + " " + _data.part;
 
        }
 
        public function get data():Object {
            return _data;
        }
        public function set listData(ld:ListData):void {
            _listData = ld;
        }
        public function get listData():ListData {
            return _listData;
        }
 
 
        public function set selected(s:Boolean):void {
            _selected = s;
        }
 
        public function get selected():Boolean {
            return _selected;
 
        }
        public function setSize(width:Number, height:Number):void {
        }
        public function setStyle(style:String, value:Object):void {
        }
        public function setMouseState(state:String):void{
        }
 
        }
 
}

и вот как это привязывается к DataGrid
Код AS3:

                var dataCol:DataGridColumn = new DataGridColumn("data");
                        dataCol.cellRenderer = Add_words_cell;
                        this.wordsDG.addColumn(dataCol);

А теперь вопрос: я хочу передать параметр конструктору класс который у меня типа cell renderer. Вот что добавляю в конструкторе класса
Код AS3:

public function Add_words_cell(user:Array)

и вот что делаю когда назначаю cellRendere:
Код AS3:

dataCol.cellRenderer = new Add_words_cell(this.user);

но эта схема не срабатывает, так как видимо свойство cellRenderer должно быть классом, а не экземпляром. Как мне передать параметр по нормальному в ячейку не через DataProvider? Просто тупо одинаковый IDшник пользователя передавать в каждой строчке Dataprovider, хочется его один раз впихнуть в Cellrenderer

silin 13.09.2010 15:39

можно это свойство определить в кастомном DataGrid (или DataGridColumn),
а в CellRenderer-е брать его из listData.owner (+ listData.column для DataGridColumn)

будет ли это краше, чем тупо передвать в каждой строчке - вопрос..

Cher80 13.09.2010 16:47

понял спасибо, хороший вариант. Я пока сделал так: мне по выбору значения в клетке надо делать действия, решил слать кастомный евент из клетки с её содержанием в мувик где находится DataGrid


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

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