大师怎么给CheckBox implements ICellRenderer的类设true或false

gaowenzhen 2012-07-16 10:26:35
我是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');

}
}
}


...全文
105 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaowenzhen 2012-08-28
  • 打赏
  • 举报
回复
自已最终搞定

2,275

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 Flash流媒体开发
社区管理员
  • Flash流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧