I am attempting to put an instance of Shape into cells of a DataGrid, but it appears the following error:
TypeError: Error #2007: El valor del parámetro child debe ser distinto de null.
at flash.display::DisplayObjectContainer/addChild()
at fl.controls::DataGrid/drawList()
at fl.controls::DataGrid/draw()
at fl.core::UIComponent/callLaterDispatcher()
I have a DataGrid in the library and this code in the first frame:
import fl.data.DataProvider;
import fl.controls.DataGrid;
import fl.controls.dataGridClasses.DataGridColumn;
// provider
var dp:DataProvider = new DataProvider();
dp.addItem({name: "Red", color: 0xFF0000});
dp.addItem({name: "Blue", color: 0x0080FF});
// grid
var dg:DataGrid = new DataGrid();
dg.setSize(200, 100);
dg.dataProvider = dp;
// columns
var cols:Array = [];
var name_col:DataGridColumn = new DataGridColumn('name');
cols.push(name_col);
var color_col:DataGridColumn = new DataGridColumn('color');
color_col.cellRenderer = ColorCellRenderer;
cols.push(color_col);
dg.columns = cols;
// display
addChild(dg);
This is the cell renderer:
package
{
import flash.display.Shape;
import fl.controls.listClasses.ICellRenderer;
import fl.controls.listClasses.ListData;
public class ColorCellRenderer extends Shape implements ICellRenderer {
private var _listData:ListData;
private var _data:Object;
private var _selected:Boolean;
public function ColorCellRenderer() {
}
public function set listData(newListData:ListData):void {
_listData = newListData;
}
public function get listData():ListData {
return _listData;
}
public function set data(newData:Object):void {
_data = newData;
graphics.beginFill(newData.color);
graphics.drawRect(0, 0, 20, 20);
graphics.endFill();
}
public function get data():Object {
return _data;
}
public function get selected():Boolean {
return _selected;
}
public function set selected(value:Boolean):void {
_selected = value;
}
public function setSize(width:Number,height:Number):void {
}
public function setMouseState(state:String):void {
}
}
}
What can I do? What’s wrong?