DataGrid--在列中显示图片

本文介绍如何在Flash中使用DataGrid组件展示包含外部及本地图片的数据,并通过自定义单元格渲染器LoaderCellRenderer实现图片的正确加载。

 1.在代码层加入如下代码

      (注意, 先把DataGrid组件加入到为库面板中)

 

     import fl.controls.DataGrid;
     import fl.controls.dataGridClasses.DataGridColumn;
     import fl.data.DataProvider;

     /* Create and populate a new DataProvider object. Note that three of the items
        in the data provider refer to externally-loaded images, whereas the last two
       items refer to symbol linkages in the library. */
     var dp:DataProvider = new DataProvider();
     dp.addItem({data:"http://www.helpexamples.com/flash/images/image1.jpg", title:"image1.jpg"});
     dp.addItem({data:"http://www.helpexamples.com/flash/images/image2.jpg", title:"image2.jpg"});
     dp.addItem({data:"http://www.helpexamples.com/flash/images/image3.jpg", title:"image3.jpg"});
     dp.addItem({data:"Bear", title:"Bear.jpg"});   //读本地图片文件
     dp.addItem({data:"Lion", title:"Lion.jpg"});   //读本地图片文件


     var dataGrid:DataGrid = new DataGrid();

     var dataCol:DataGridColumn = new DataGridColumn("data");
     var titleCol:DataGridColumn = new DataGridColumn("title");
     dataGrid.addColumn(dataCol);
     dataGrid.addColumn(titleCol);

     dataCol.cellRenderer = LoaderCellRenderer;

     dataGrid.dataProvider = dp;
     dataGrid.rowHeight = 64;
     dataGrid.width = 200;
     dataGrid.rowCount = dp.length - 1;
     dataGrid.move(10, 10);
     trace(dataGrid);
     addChild(dataGrid);

 

2.LoaderCellRenderer类

     package {
         import fl.containers.UILoader;
         import fl.controls.listClasses.ICellRenderer;
         import fl.controls.listClasses.ListData;
         import fl.core.InvalidationType;
         import fl.data.DataProvider;
         import flash.events.Event;
  
         public class LoaderCellRenderer extends UILoader implements ICellRenderer {
             protected var _data:Object;
             protected var _listData:ListData;
             protected var _selected:Boolean;
      
             public function LoaderCellRenderer():void {
                 super();
             }
      
             public function get data():Object {
                 return _data;
             }
      
             public function set data(value:Object):void {
                 _data = value;
                 source = 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 selected():Boolean {
                 return _selected;
             }
      
             public function set selected(value:Boolean):void {
                 _selected = value;
                 invalidate(InvalidationType.STATE);
             }
   
            public function setMouseState(state:String):void {
            }
         }
     }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值