flex 给DataGrid添加CheckBox全选列
来源:互联网 发布:网络链路冗余技术 编辑:程序博客网 时间:2024/05/21 19:29
其实这个只是扩展了一下下ItemRenderer,headerRenderer ,然后继承DataGridColumn写一个自己的GridColumn。
扩展的类有三个,分别是:
1、CheckBoxColumn:这个类继承了DataGridColumn
2、CheckBoxHeader:继承了CheckBox
3、CheckBoxRenderer:继承了CheckBox
如图:
代码如下:
CheckBoxColumn类
Java代码
package org.extendx.grid
{
import mx.controls.dataGridClasses.DataGridColumn;
public class CheckBoxColumn extends DataGridColumn
{
public var header:CheckBoxHeader=null;
public var columnRenderers:Array=[];
public var checkField:String="selected";//默认选择框的字段
public function CheckBoxColumn(columnName:String=null)
{
super(columnName);
}
public function setColumnRenderers(o:CheckBoxRenderer){
this.columnRenderers.push(o);
}
}
}
CheckBoxHeader类
Java代码
package org.extendx.grid
{
import flash.events.MouseEvent;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.controls.CheckBox;
import mx.controls.DataGrid;
import mx.controls.dataGridClasses.DataGridColumn;
import mx.events.DynamicEvent;
public class CheckBoxHeader extends CheckBox
{
private var _data:DataGridColumn;
private var isRegisted:Boolean=false;
public var checkField:String="selected";//默认选择框的字段
public function CheckBoxHeader()
{
super();
this.setStyle("paddingLeft",5);
this.addEventListener(MouseEvent.CLICK,this.onHeaderClick);
}
override public function set data(value:Object):void {
_data=value as DataGridColumn;
this.label=value.headerText
if(!this.isRegisted){
var cc:CheckBoxColumn=this.data as CheckBoxColumn;
cc.header=this;
this.checkField=cc.checkField;
this.isRegisted=true;
}
}
override public function get data():Object
{
return _data;
}
override public function set selected(value:Boolean):void{
super.selected=value;
if(listData){
var dg:DataGrid = DataGrid(listData.owner);
var de:DynamicEvent=new DynamicEvent("selectedAllChange");
de.selected=this.selected
dg.dispatchEvent(de);
}
}
private function onHeaderClick(e:MouseEvent){
var dg:DataGrid = DataGrid(listData.owner);
var s:ArrayCollection=ArrayCollection(dg.dataProvider);
var array=[];
for(var i=0;i<s.length;i++){
s[i][this.checkField]=this.selected;
}
dg.invalidateList();
}
}
}
CheckBoxRenderer 类
Java代码
package org.extendx.grid
{
import flash.events.MouseEvent;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.controls.CheckBox;
import mx.controls.DataGrid;
import mx.controls.Label;
import mx.controls.TextInput;
public class CheckBoxRenderer extends CheckBox
{
private var isRegisted:Boolean=false;
public var checkField:String="selected";//默认选择框的字段
private var ml:Label=null
public function CheckBoxRenderer()
{
super();
this.setStyle("paddingLeft",5);
this.setStyle("fontStyle","italic");//fontStyle: normal | italic | oblique;]
this.setStyle("fontSize",13);//fontStyle: normal | italic | oblique;]
this.addEventListener(MouseEvent.CLICK,this.onReClick);
}
override public function set data(value:Object):void {
super.data=value;
this.label=value.displayName;//这个地方写死了显示字段,需要改的朋友可以改改试试
if(!isRegisted){
isRegisted=true
var dg:DataGrid = DataGrid(listData.owner)
var cc:CheckBoxColumn=dg.columns[listData.columnIndex];
this.checkField=cc.checkField;
}
this.selected=value[this.checkField];
}
override public function set selected(value:Boolean):void{
super.selected=value;
}
private function onReClick(e){
this.data[this.checkField]=this.selected;
var dg:DataGrid = DataGrid(listData.owner)
var cc:CheckBoxColumn=dg.columns[listData.columnIndex];
cc.header.selected=isAll();
}
private function isAll(){
var dg:DataGrid = DataGrid(listData.owner)
var s:ArrayCollection=ArrayCollection(dg.dataProvider);
for(var i=0;i<s.length;i++){
if(!s[i][this.checkField]){
return false
}
}
return true
}
}
}
调用代码:
Java代码
this.dg=new DataGrid();
var dgcc:CheckBoxColumn=new CheckBoxColumn();
dgcc.headerText="";
dgcc.width=25;
dgcc.dataField="displayName"
dgcc.checkField="selected"//设置选择框对应字段
dgcc.itemRenderer=new ClassFactory(CheckBoxRenderer);//此处还可以放到CheckBoxColumn内部
dgcc.headerRenderer=new ClassFactory(CheckBoxHeader);//此处还可以放到CheckBoxColumn内部
var dgcc2:DataGridColumn=new DataGridColumn();
dgcc2.headerText="";
//dgcc2.width=40;
dgcc2.dataField="displayName";
this.dg.columns=[dgcc,dgcc2]
- flex 给DataGrid添加CheckBox全选列
- 给DataGrid加CheckBox列并在表头添加全选、全选按钮、置零按钮
- 给DataGrid加CheckBox列并在表头添加全选、全选按钮、置零按钮
- JavaScript实现DataGrid中添加CheckBox列(全选与否)
- JavaScript实现DataGrid中添加CheckBox列(全选与否)
- [ASP.NET]在DataGrid列页眉中添加全选CheckBox
- JavaScript实现DataGrid中添加CheckBox列(全选与否)
- JavaScript实现DataGrid中添加CheckBox列(全选与否)
- JavaScript实现DataGrid中添加CheckBox列(全选与否)
- JavaScript实现DataGrid中添加CheckBox列(全选与否)
- Flex中DataGrid实现列(包括头部)中加入CheckBox全选功能
- Flex中DataGrid实现列(包括头部)中加入CheckBox全选功能
- Flex中DataGrid实现列(包括头部)中加入CheckBox全选功能 几种实现方法
- flex DataGrid 标题上放 CheckBox 实现全选
- flex中datagrid checkbox全选及单选源码
- datagrid控件中添加checkbox控件列
- datagrid控件中添加checkbox控件列
- 添加一个CheckBox列到DataGrid
- Android使用FileInputStream和FileOutputStream进行文件I/O操作
- 提高第29课时,自测
- 关于装饰设计模式的总结
- Flex+Java Servlet文件上传实例
- iOS中WebView的基本应用
- flex 给DataGrid添加CheckBox全选列
- javascript笔记:深入分析javascript里对象的创建(上)
- 送上最新鲜的互联网行业新闻-【2015-05-20】
- 如何修改github账号的用户名
- hdu 1829 A Bug's Life
- Spring MVC中@Repository、@Service、@Controller、@Compon的使用及区别
- Codeforces 540B - School Marks (贪心)
- uva 297
- Ehcache 整合Spring 使用页面、对象缓存