flex datagrid 嵌checkbox实现全选与数据存储(非绑定数据源)
2011-11-01 13:03
519 查看
http://fogiguiuu.iteye.com/blog/591106
重写了DataGrid,主要是为了得到DataGrid的listItems属性,listItems保存了当前现显示的每一行的信息,还用了个ArrayCollection保存被选中了行的信息。
MyDataGrid.as
Java代码
package flex.components.checkdatagrid { import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.controls.DataGrid; public class MyDataGrid extends DataGrid { protected var arrColl:ArrayCollection = null; //保存被选中的信息 public function MyDataGrid() { super(); arrColl = new ArrayCollection(); } //方法名不该取这个的 public function get listRendererArray():Array{ return listItems; } //add public function addToSelected(item:Object):void{ if(arrColl.getItemIndex(item)<0) { arrColl.addItem(item); } } //del public function delFromSelected(item:Object):void{ if(arrColl.getItemIndex(item)>-1) { arrColl.removeItemAt(arrColl.getItemIndex(item)); } } //isIn public function isInSelected(item:Object):Boolean{ if(arrColl.getItemIndex(item)<0) { return false; } else { return true; } } public function getSelected():ArrayCollection{ return arrColl; } } }
CheckHeadBoxIR.as 实现全选用的checkbox
Java代码
package flex.components.checkdatagrid
{
import flash.display.DisplayObject;
import flash.events.Event;
import flash.text.TextField;
import mx.controls.CheckBox;
import mx.controls.DataGrid;
import mx.events.DataGridEvent;
public class CheckHeadBoxIR extends CheckBox
{
public function CheckHeadBoxIR(){
super();
this.addEventListener(Event.CHANGE, cgHandler);
}
override public function set data(value:Object) : void{
//super.data = value; //一定不要有这句
this.selected = false;
DataGrid(listData.owner).addEventListener(DataGridEvent.HEADER_RELEASE, sortEventHandler);
}
private function sortEventHandler(event:DataGridEvent):void{
if(event.itemRenderer == this)
{
event.preventDefault();
}
}
//居中显示
override protected function updateDisplayList(w:Number, h:Number) : void{
super.updateDisplayList(w, h);
for(var i:Number=0; i<numChildren; i++)
{
var c:DisplayObject = getChildAt(i);
if(!(c is TextField))
{
c.x = Math.round((w-c.width)/2);
c.y = Math.round((h-c.height)/2);
}
}
}
protected function cgHandler(event:Event):void{
//得到DataGrid里的listItems
var listItems:Array = MyDataGrid(listData.owner).listRendererArray;
if(listItems.length>0)
{
for(var i:Number=0; i<listItems.length; i++)
{
if(listItems[i].length>0)
{
if(listItems[i][0].selected != this.selected)
{
listItems[i][0].selected = this.selected;
listItems[i][0].dispatchEvent(new Event(Event.CHANGE));
}
}
}
}
/*var ii:Object = dataGrid.indexToItemRenderer(2).data;*/
}
}
}
CheckBoxIR.as
Java代码
package flex.components.checkdatagrid
{
import flash.display.DisplayObject;
import flash.events.Event;
import flash.text.TextField;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.controls.CheckBox;
public class CheckBoxIR extends CheckBox{
public function CheckBoxIR(){
super();
this.addEventListener(Event.CHANGE, cgHandler);
}
override public function set data(value:Object) : void{
super.data = value;
if(MyDataGrid(listData.owner).isInSelected(data.id))
{
this.selected = true;
}
else
{
this.selected = false;
}
// Alert.show("int set data--"+data.@id);
}
//居中显示
override protected function updateDisplayList(w:Number, h:Number) : void{
super.updateDisplayList(w, h);
for(var i:Number=0; i<numChildren; i++)
{
var c:DisplayObject = getChildAt(i);
if(!(c is TextField))
{
c.x = Math.round((w-c.width)/2);
c.y = Math.round((h-c.height)/2);
}
}
}
protected function cgHandler(event:Event):void{
var dg:MyDataGrid = MyDataGrid(listData.owner);
if(this.selected == true)
{
dg.addToSelected(data.id);
}
else
{
dg.delFromSelected(data.id);
}
}
}
}
应用
Java代码
<checkdatagrid:MyDataGrid width="100%" borderStyle="outset" height="366"
id="orderInfo" dataProvider="{data}" >
<checkdatagrid:columns>
<mx:DataGridColumn headerRenderer=flex.components.checkdatagrid.CheckHeadBoxIR" itemRenderer="flex.components.checkdatagrid.CheckBoxIR" width="30"/>
</checkdatagrid:columns>
</checkdatagrid:MyDataGrid>
重写了DataGrid,主要是为了得到DataGrid的listItems属性,listItems保存了当前现显示的每一行的信息,还用了个ArrayCollection保存被选中了行的信息。
MyDataGrid.as
Java代码
package flex.components.checkdatagrid { import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.controls.DataGrid; public class MyDataGrid extends DataGrid { protected var arrColl:ArrayCollection = null; //保存被选中的信息 public function MyDataGrid() { super(); arrColl = new ArrayCollection(); } //方法名不该取这个的 public function get listRendererArray():Array{ return listItems; } //add public function addToSelected(item:Object):void{ if(arrColl.getItemIndex(item)<0) { arrColl.addItem(item); } } //del public function delFromSelected(item:Object):void{ if(arrColl.getItemIndex(item)>-1) { arrColl.removeItemAt(arrColl.getItemIndex(item)); } } //isIn public function isInSelected(item:Object):Boolean{ if(arrColl.getItemIndex(item)<0) { return false; } else { return true; } } public function getSelected():ArrayCollection{ return arrColl; } } }
package flex.components.checkdatagrid { import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.controls.DataGrid; public class MyDataGrid extends DataGrid { protected var arrColl:ArrayCollection = null; //保存被选中的信息 public function MyDataGrid() { super(); arrColl = new ArrayCollection(); } //方法名不该取这个的 public function get listRendererArray():Array{ return listItems; } //add public function addToSelected(item:Object):void{ if(arrColl.getItemIndex(item)<0) { arrColl.addItem(item); } } //del public function delFromSelected(item:Object):void{ if(arrColl.getItemIndex(item)>-1) { arrColl.removeItemAt(arrColl.getItemIndex(item)); } } //isIn public function isInSelected(item:Object):Boolean{ if(arrColl.getItemIndex(item)<0) { return false; } else { return true; } } public function getSelected():ArrayCollection{ return arrColl; } } }
CheckHeadBoxIR.as 实现全选用的checkbox
Java代码
package flex.components.checkdatagrid
{
import flash.display.DisplayObject;
import flash.events.Event;
import flash.text.TextField;
import mx.controls.CheckBox;
import mx.controls.DataGrid;
import mx.events.DataGridEvent;
public class CheckHeadBoxIR extends CheckBox
{
public function CheckHeadBoxIR(){
super();
this.addEventListener(Event.CHANGE, cgHandler);
}
override public function set data(value:Object) : void{
//super.data = value; //一定不要有这句
this.selected = false;
DataGrid(listData.owner).addEventListener(DataGridEvent.HEADER_RELEASE, sortEventHandler);
}
private function sortEventHandler(event:DataGridEvent):void{
if(event.itemRenderer == this)
{
event.preventDefault();
}
}
//居中显示
override protected function updateDisplayList(w:Number, h:Number) : void{
super.updateDisplayList(w, h);
for(var i:Number=0; i<numChildren; i++)
{
var c:DisplayObject = getChildAt(i);
if(!(c is TextField))
{
c.x = Math.round((w-c.width)/2);
c.y = Math.round((h-c.height)/2);
}
}
}
protected function cgHandler(event:Event):void{
//得到DataGrid里的listItems
var listItems:Array = MyDataGrid(listData.owner).listRendererArray;
if(listItems.length>0)
{
for(var i:Number=0; i<listItems.length; i++)
{
if(listItems[i].length>0)
{
if(listItems[i][0].selected != this.selected)
{
listItems[i][0].selected = this.selected;
listItems[i][0].dispatchEvent(new Event(Event.CHANGE));
}
}
}
}
/*var ii:Object = dataGrid.indexToItemRenderer(2).data;*/
}
}
}
package flex.components.checkdatagrid { import flash.display.DisplayObject; import flash.events.Event; import flash.text.TextField; import mx.controls.CheckBox; import mx.controls.DataGrid; import mx.events.DataGridEvent; public class CheckHeadBoxIR extends CheckBox { public function CheckHeadBoxIR(){ super(); this.addEventListener(Event.CHANGE, cgHandler); } override public function set data(value:Object) : void{ //super.data = value; //一定不要有这句 this.selected = false; DataGrid(listData.owner).addEventListener(DataGridEvent.HEADER_RELEASE, sortEventHandler); } private function sortEventHandler(event:DataGridEvent):void{ if(event.itemRenderer == this) { event.preventDefault(); } } //居中显示 override protected function updateDisplayList(w:Number, h:Number) : void{ super.updateDisplayList(w, h); for(var i:Number=0; i<numChildren; i++) { var c:DisplayObject = getChildAt(i); if(!(c is TextField)) { c.x = Math.round((w-c.width)/2); c.y = Math.round((h-c.height)/2); } } } protected function cgHandler(event:Event):void{ //得到DataGrid里的listItems var listItems:Array = MyDataGrid(listData.owner).listRendererArray; if(listItems.length>0) { for(var i:Number=0; i<listItems.length; i++) { if(listItems[i].length>0) { if(listItems[i][0].selected != this.selected) { listItems[i][0].selected = this.selected; listItems[i][0].dispatchEvent(new Event(Event.CHANGE)); } } } } /*var ii:Object = dataGrid.indexToItemRenderer(2).data;*/ } } }
CheckBoxIR.as
Java代码
package flex.components.checkdatagrid
{
import flash.display.DisplayObject;
import flash.events.Event;
import flash.text.TextField;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.controls.CheckBox;
public class CheckBoxIR extends CheckBox{
public function CheckBoxIR(){
super();
this.addEventListener(Event.CHANGE, cgHandler);
}
override public function set data(value:Object) : void{
super.data = value;
if(MyDataGrid(listData.owner).isInSelected(data.id))
{
this.selected = true;
}
else
{
this.selected = false;
}
// Alert.show("int set data--"+data.@id);
}
//居中显示
override protected function updateDisplayList(w:Number, h:Number) : void{
super.updateDisplayList(w, h);
for(var i:Number=0; i<numChildren; i++)
{
var c:DisplayObject = getChildAt(i);
if(!(c is TextField))
{
c.x = Math.round((w-c.width)/2);
c.y = Math.round((h-c.height)/2);
}
}
}
protected function cgHandler(event:Event):void{
var dg:MyDataGrid = MyDataGrid(listData.owner);
if(this.selected == true)
{
dg.addToSelected(data.id);
}
else
{
dg.delFromSelected(data.id);
}
}
}
}
package flex.components.checkdatagrid { import flash.display.DisplayObject; import flash.events.Event; import flash.text.TextField; import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.controls.CheckBox; public class CheckBoxIR extends CheckBox{ public function CheckBoxIR(){ super(); this.addEventListener(Event.CHANGE, cgHandler); } override public function set data(value:Object) : void{ super.data = value; if(MyDataGrid(listData.owner).isInSelected(data.id)) { this.selected = true; } else { this.selected = false; } // Alert.show("int set data--"+data.@id); } //居中显示 override protected function updateDisplayList(w:Number, h:Number) : void{ super.updateDisplayList(w, h); for(var i:Number=0; i<numChildren; i++) { var c:DisplayObject = getChildAt(i); if(!(c is TextField)) { c.x = Math.round((w-c.width)/2); c.y = Math.round((h-c.height)/2); } } } protected function cgHandler(event:Event):void{ var dg:MyDataGrid = MyDataGrid(listData.owner); if(this.selected == true) { dg.addToSelected(data.id); } else { dg.delFromSelected(data.id); } } } }
应用
Java代码
<checkdatagrid:MyDataGrid width="100%" borderStyle="outset" height="366"
id="orderInfo" dataProvider="{data}" >
<checkdatagrid:columns>
<mx:DataGridColumn headerRenderer=flex.components.checkdatagrid.CheckHeadBoxIR" itemRenderer="flex.components.checkdatagrid.CheckBoxIR" width="30"/>
</checkdatagrid:columns>
</checkdatagrid:MyDataGrid>
<checkdatagrid:MyDataGrid width="100%" borderStyle="outset" height="366" id="orderInfo" dataProvider="{data}" > <checkdatagrid:columns> <mx:DataGridColumn headerRenderer=flex.components.checkdatagrid.CheckHeadBoxIR" itemRenderer="flex.components.checkdatagrid.CheckBoxIR" width="30"/> </checkdatagrid:columns> </checkdatagrid:MyDataGrid>
相关文章推荐
- flex datagrid 嵌checkbox实现全选与数据存储(非绑定数据源)
- Flex中DataGrid实现列(包括头部)中加入CheckBox全选功能
- flex DataGrid 标题上放 CheckBox 实现全选
- Flex中DataGrid实现列(包括头部)中加入CheckBox全选功能 几种实现方法
- Flex:用checkBox实现DataGrid所有行的选择(全选)
- 在DataGrid的头中插入CheckBox单选框定义为全选并实现整个DataGrid的每行数据前的CheckBox全选
- 在Flex中简单实现 dataGrid结合CheckBox使项目可选、全选、反选
- Flex中DataGrid实现列(包括头部)中加入CheckBox全选功能
- 周末在家闲得慌,整理了一下flex AdvancedDataGrid实现checkBox全选功能
- DataGrid 简单自定义表头插入CheckBox实现全选/全不选
- 如何在Flex中实现全选DataGrid中的所有Item
- javascript实现datagrid客户端checkbox列的全选,反选
- 在asp.net中实现datagrid checkbox 全选的方法
- experssionhandle数据源,在datagrid中利用checkbox显示并编辑boolean类型数据
- Flex(mx:DataGrid)实现数据过滤显示
- Flex4 DataGrid添加CheckBox及动态添加数据
- javascript实现datagrid客户端checkbox列的全选,反选
- WinForm DataGrid 中在 DataGridBoolColumn 的列标题上加一个 CheckBox 实现全选和全不选
- MVP实现用Retrofit请求网络数据Fresco加载图片,Recyclerview CheckBox显示并实现全选删除
- [导入]JavaScript实现DataGrid中添加CheckBox列(全选与否)