读书人

大师如何给CheckBox implements ICell

发布时间: 2012-12-26 14:39:28 作者: rapoo

大师怎么给CheckBox implements ICellRenderer的类设true或false
本帖最后由 gaowenzhen 于 2012-07-16 22:34:05 编辑 我是flash 中actionscript3.0 中用到

有两个类 DataGridExample.as和CheckBoxRenderer.as

DataGridExample.as 类中的动态创建了一个DataGrid
因第一列要用到CheckBox,我就用到了ICellRenderer,


CheckBoxRenderer.as
原来有一个addEventListener(Event.CHANGE,onCheckChange);方法可老和DataGridExample类的Event.CHANGE跑到一起
就不能准确的判断出true或false,因为程序是默认DataGridExample执行完自已的事件才能执行到CheckBoxRenderer类
如下是程序大师看一眼

#################################################
最终要求:点DataGrid第一列某个CheckBox得到真或假,同事得到DataGrid当前行的index,最好是在DataGridExample类中可以用到这些值感谢
##################################################



package
{
import flash.display.Sprite;
import flash.display.Shape;
import flash.events.Event;
import flash.text.TextField;

import fl.data.DataProvider;
import fl.controls.Label;

import fl.controls.ScrollBarDirection;
import flash.display.Bitmap;
import fl.controls.CheckBox;


import fl.controls.DataGrid;
import fl.controls.ScrollPolicy;
import fl.data.DataProvider;
import flashx.textLayout.container.ColumnState;
import flash.events.MouseEvent;
import flash.utils.setTimeout;







public class DataGridExample extends Sprite
{

public function DataGridExample()
{

}
public function setfilelistdata(w:int=0,h:int=0,imgadatalistarry:Array=null):void
{
createDataGrid(w,h,imgadatalistarry);
}

private var dg:DataGrid = new DataGrid();
private var dp:DataProvider= new DataProvider();
public function createDataGrid(w:int,h:int,imgdataarry:Array):void
{

if (dg != null && dg.parent != null)
{
dg.parent.removeChild(dg);
dg = null;
}


var i:uint;
for (i = 0; i < imgdataarry.length; i++)
{
//这里一个数组
dp.addItem({selete:i,data:Bitmap(imgdataarry[i].imgbit),GPS:imgdataarry[i].gps,"时间":imgdataarry[i].rsDateTime});
}


dg.setSize(w,h);
dg.columns = ["选择","图片","GPS","时间"];
dg.dataProvider = dp;
dg.move(5,30);
dg.rowHeight = 140;
dg.getColumnAt(0).width = 40;
dg.getColumnAt(1).width = 200;
dg.getColumnAt(2).width = 200;
dg.resizableColumns=false;
dg.getColumnAt(0).cellRenderer = CheckBoxRenderer;
dg.addEventListener(Event.CHANGE,onCheckChange);
addChild(dg);


}

private var CheckBoxclass:CheckBoxRenderer;
public function onCheckChange(e:Event):void
{
if(CheckBoxclass==null)
CheckBoxclass=new CheckBoxRenderer();
CheckBoxclass.onCheckChange();

}

}



}
















CheckBoxRenderer.as
package
{
import fl.controls.CheckBox;
import fl.controls.listClasses.ICellRenderer;
import fl.controls.listClasses.ListData;
import flash.events.Event;
import fl.core.InvalidationType;


public class CheckBoxRenderer extends CheckBox implements ICellRenderer
{
public var _listData:ListData;
public var _data:Object;

public function CheckBoxRenderer(){
// super();
// addEventListener(Event.CHANGE,onCheckChange);
}
public function set data(d:Object):void{
_data = d;
label = "";
_selected = (_data["checked"]=='true')?true:false;
}
public function get data():Object {
return _data;
}
public function get selectedItem():Object {
return _data;
}
public function get listData():ListData {
return _listData;
}
public function set listData(value:ListData):void {
_listData = value;
}
override public function get selected():Boolean {
return _selected;
}
override public function set selected(value:Boolean):void {
}
private var DataGridcheckstrin:DataGridExample;
//e:Event
public function onCheckChange() {
trace("因不行我就考虑到从DataGridExample直接执行它可如下会报错");
_selected = !_selected;
this["checked"]=(_selected==true)?'true':'false';
//_data["checked"] = (_selected==true)?'true':'false';
//if(DataGridcheckstrin==null){
//DataGridcheckstrin=new DataGridExample();
//}
//DataGridcheckstrin.rseonCheckChange((_selected==true)?'true':'false');

}
}
}



[解决办法]
自已最终搞定

读书人网 >Flash

热点推荐