PDA

Просмотр полной версии : Свой CellRenderer, как передать параметр конструктору


Cher80
13.09.2010, 14:34
Добрый %timestamp%
Есть у меня Datagrid, и к нему класс расширяющий CellRenderer (к нему еще прилинован мувик, поэтому не пугайтесь странных переменных в классе). В конструктор этого класса я ничего не передаю:
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
var dataCol:DataGridColumn = new DataGridColumn("data");
dataCol.cellRenderer = Add_words_cell;
this.wordsDG.addColumn(dataCol);

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

public function Add_words_cell(user:Array)

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

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