• checkbox in datagrid flash as3中把checkbox组件放入datagrid中2009-04-30

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://crazyrabbit.blogbus.com/logs/38711416.html

    昨天研究了UILloader组件放入datagrid中,今天把checkbox放进去,这才是我要的重点,呵呵,终于有成果了,也不算没白看,进入正题。

    准备阶段,要保证datagrid和checkbox组件在fla的库中。

    时间轴as如下

             import fl.controls.DataGrid;
    import fl.controls.dataGridClasses.DataGridColumn;
    import fl.data.DataProvider;
    
    var dp:DataProvider = new DataProvider();
    
    dp.addItem({data:"点击选择", title:"image1.jpg"});
    dp.addItem({data:"点击选择", title:"image2.jpg"});
    dp.addItem({data:"点击选择", title:"image3.jpg"});
    dp.addItem({data:"点击选择", title:"Bear.jpg"});
    dp.addItem({data:"点击选择", title:"Lion.jpg"})
    
    var dataCol:DataGridColumn = new DataGridColumn("数据");
    dataCol.cellRenderer = LoaderCellRenderer;
    
    var titleCol:DataGridColumn = new DataGridColumn("title");
    
    
    var myDataGrid:DataGrid = new DataGrid();
    myDataGrid.addColumn(dataCol);
    myDataGrid.addColumn(titleCol);
    myDataGrid.dataProvider = dp;
    myDataGrid.rowHeight = 64;
    myDataGrid.width = 200;
    myDataGrid.rowCount = dp.length - 1;
    myDataGrid.move(10, 10);
    addChild(myDataGrid);
    
          

    下面是LoaderCellRenderer.as类

              package {
    //导入所需要的类
    import fl.controls.listClasses.ICellRenderer;
    import fl.controls.listClasses.ListData;
    import fl.core.InvalidationType;
    import fl.data.DataProvider;
    import flash.events.Event;
    import fl.controls.CheckBox;
    //LoaderCellRenderer 实现 ICellRenderer 接口
    public class LoaderCellRenderer extends CheckBox implements ICellRenderer {
    protected var _data:Object;
    protected var _listData:ListData;
    protected var _mySelected:Boolean;

    public function LoaderCellRenderer():void {
    super();
    }

    public function get data():Object {
    return _data;
    }
    public function set data(value:Object):void {
    _data = value;
    //checkbox的文字
    label = value.data;
    }

    public function get listData():ListData {
    return _listData;
    }
    public function set listData(value:ListData):void {
    _listData = value;
    invalidate(InvalidationType.DATA);
    invalidate(InvalidationType.STATE);
    }

    public function get select():Boolean {
    return _mySelected;
    }
    public function set select(value:Boolean) :void {
    _mySelected = value;
    invalidate(InvalidationType.STATE);
    }
    public function setMouseStates(state:String):void {

    }
    }
    }


    收藏到:Del.icio.us