四个相关的类文件,分别是:
1、 CenterCheckBox.as:通过重写CheckBox基类来实现复选框的居中显示;
2、CheckBoxColumn.as:继 承自DataGridColumn的一个新类,为了实现需要,增添了几个新属性;
3、 CheckBoxHeaderRenderer.as:继承自CenterCheckBox 类,用于DataGrid表头的复选框,实现全选功能;
4、 CheckBoxItemRenderer.as:继承自CenterCheckBox 类,用于DataGrid表中的数据行
------------------------
package comp
{
import flash.display.DisplayObject;
import flash.text.TextField;
import mx.controls.CheckBox;
public class CenterCheckBox extends CheckBox
{
// 居中展现
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
var n:int = numChildren;
for(var i:int = 0; i < n; i++)
{
var c:DisplayObject = getChildAt(i);
if( !(c is TextField))
{
c.x = Math.round((unscaledWidth - c.width) / 2);
c.y = Math.round((unscaledHeight - c.height) /2 );
}
}
}
}
------------------
package comp
{
import mx.controls.dataGridClasses.DataGridColumn;
public class CheckBoxColumn extends DataGridColumn{
public var cloumnSelected:Boolean=false;//保存该列是否全选的属性(用户先点击全选后在手动的取消几行数据的选中状态时,这里的状态不会改 变)
public var selectItems:Array = new Array();// 用户保存用户选中的数据
public function CheckBoxColumn(columnName:String=null){
super(columnName);
}
}
}
----------------
package comp
{
import flash.events.Event;
import mx.collections.ArrayCollection;
import mx.controls.DataGrid;
public class CheckBoxHeaderRenderer extends CenterCheckBox{
private var _data:CheckBoxColumn;//定义CheckBox列对象
public function CheckBoxHeaderRenderer(){
super();
this.addEventListener(Event.CHANGE,onChange);//CheckBox状态变化时触发此事件
this.toolTip = "全选";
}
override public function get data():Object{
return _data;//返回的是CheckBox列的对象
}
override public function set data(value:Object):void{
_data = value as CheckBoxColumn;
//trace(_data.cloumnSelected);
selected = _data.cloumnSelected;
}
private function onChange(event:Event):void{
var dg:DataGrid = DataGrid(listData.owner);//获取 DataGrid对象
var column:CheckBoxColumn = dg.columns[listData.columnIndex];//获取整列的显示对 象
var dgDataArr:ArrayCollection = dg.dataProvider as ArrayCollection;
column.cloumnSelected = this.selected;//更改列的全选状态
column.selectItems = new Array();// 重新初始化用于保存选中列的对象
if(this.selected){//如果为全部选中的化就将数据源赋值给column.selectItems,不是就不管他,上一步已经初始化为空
column.selectItems = (dg.dataProvider as ArrayCollection).toArray();
}
if(dgDataArr.length>0){
if(dgDataArr[0]!=""){
for(var i:int = 0; i < dgDataArr.length ; i++){
Object(dgDataArr[i]).dgSelected = this.selected;//更改没一行的选中状态
}
}
}
dgDataArr.refresh();//刷新 数据源,达到强制更新页面显示效果的功能,防止在使用时没有在VO类中使用绑定而出现点击全选页面没有更改状态的错误
}
}
}
----------
package comp
{
import flash.events.Event;
import mx.controls.DataGrid;
public class CheckBoxItemRenderer extends CenterCheckBox{
private var currentData:Object; //保存当前一行值的对象
public function CheckBoxItemRenderer(){
super();
this.addEventListener(Event.CHANGE,onClickCheckBox);
this.toolTip = "选择";
}
override public function set data(value:Object):void{
this.selected = value.dgSelected;
this.currentData = value; //保存整行的引用
}
//点击check box时,根据状况向selectedItems array中添加当前行的引用,或者从array中移除
private function onClickCheckBox(e:Event):void{
var dg:DataGrid = DataGrid(listData.owner);//获取DataGrid对象
var column:CheckBoxColumn = dg.columns[listData.columnIndex];//获取整列的显示对 象
var selectItems:Array = column.selectItems;
this.currentData.dgSelected = this.selected;// 根据是否选中的状态,更改数据源中选中的标记
if(this.selected){
selectItems.push(this.currentData);
}else{
for(var i:int = 0; i<selectItems.length; i++){
if(selectItems[i] == this.currentData){
selectItems.splice(i,1)
}
}
}
}
}
}
---------------------------------application
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
minWidth="1024" minHeight="768"
creationComplete="Init()" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:comp="comp.*" >
<fx:Script>
<![CDATA[
import comp.CheckBoxHeaderRenderer;
import comp.CheckBoxItemRenderer;
import mx.collections.ArrayCollection;
public var dataArray:ArrayCollection = new ArrayCollection;
private function Init():void{
dataArray.addItem({isSelected:false,name:'zhangsan',phone:'2270',email:'12@123.com'});
dataArray.addItem({isSelected:false,name:'lisi',phone:'2270',email:'12@123.com'});
dgUser.dataProvider = dataArray;
}
]]>
</fx:Script>
<mx:DataGrid id="dgUser" x="10" y="10" width="450" height="200">
<mx:columns>
<comp:CheckBoxColumn dataField="isSelected" width="25"
draggable="false" resizable="false" sortable="false"
headerRenderer="{new ClassFactory(comp.CheckBoxHeaderRenderer)}"
itemRenderer="{new ClassFactory(comp.CheckBoxItemRenderer)}" />
<mx:DataGridColumn headerText="姓名" dataField="name"/>
<mx:DataGridColumn headerText="电话" dataField="phone"/>
<mx:DataGridColumn headerText="邮件" dataField="email"/>
</mx:columns>
</mx:DataGrid>
</s:Application>
分享到:
相关推荐
在标题“Flex Datagrid checkbox实现”中,讨论的核心是Datagrid中集成复选框(checkbox)的功能。 在Flex Datagrid中实现复选框功能,主要是通过添加一个自定义的列renderer来完成。Renderer是Datagrid中的一个小...
在Flex的DataGrid中,我们可以为每一行添加CheckBox,这样用户就可以通过点击CheckBox来选择或取消选择特定的行。这在需要多选操作的场景中非常实用,比如用户需要批量处理某些数据。 二、设置CheckBox的默认状态 ...
在Flex开发中,Datagrid是一种常用的组件,用于展示表格数据,而checkbox全选功能则是提高用户体验的一个重要特性。本文将详细讲解如何实现Flex Datagrid中checkbox的全选功能。 首先,我们要了解Flex Datagrid的...
"flex datagrid checkbox实现源码"这个主题就是关于如何在Flex DataGrid中集成并正确管理复选框功能的。 1. **Flex DataGrid基础** Flex DataGrid是Adobe Flex框架中的一种组件,用于显示和编辑大量结构化的数据。...
### Flex DataGrid Checkbox 全选/反选知识点详解 #### 一、概述 Flex DataGrid 控件是Adobe Flex框架中的一个重要组成部分,它提供了一个灵活的方式来展示数据列表,并且支持多种功能,如排序、分组、筛选等。在...
下面将详细解释如何在Flex中的DataGrid中实现CheckBox功能。 1. **添加CheckBox列** 要在DataGrid中添加CheckBox,首先我们需要创建一个包含复选框的新列。这可以通过定义一个自定义的Column类来完成,该类继承自...
在Flex开发中,数据网格(DataGrid)是用于展示数据集合的强大组件,它允许用户以表格形式查看和操作数据。本示例关注的是在DataGrid中嵌套复选框(Checkbox),并实现全选功能。这在需要用户批量选择或操作数据的...
在Flex开发中,数据网格(DataGrid)是一种常用的组件,用于展示结构化的数据。当我们需要在数据网格中实现复选框功能,以便用户可以多选数据行时,通常会遇到两个主要需求:一是如何在标题栏添加复选框,二是如何使...
Flex的DataGrid中使用CheckBox. 大家共同研究
其中包含一个三种状态的checkbox,DataGrid代码中引用了 带多选框的DataGrid(AdvancedDataGrid) 表头有全选CheckBox,三种状态:全选、部分选择、无选择 如果改变目录结构,需要在CustomCheckBox.mxml中更改inner....
在Flex开发中,数据网格(DataGrid)是用于展示大量结构化数据的组件,它可以提供丰富的功能,如排序、分页、编辑等。在实际应用中,我们有时需要在DataGrid的每一行中插入多个复选框(Checkbox),以便用户能够进行...
本文将详细讨论如何在Flex DataGrid中实现全选和反选功能,并结合`checkBox`来优化这一过程。 首先,我们要理解DataGrid的结构。DataGrid由多个列组成,每一列可能包含不同类型的控件,如文本、图像或复选框。在...
在Flex编程中,Datagrid组件是用于展示数据集的一个强大工具,它允许用户进行交互式的数据浏览和操作。"Flex Datagrid全选功能"是指在Datagrid中实现一个功能,让用户能够一键选择所有行,这在处理大量数据时非常...
标题"flex-带checkbox的datagrid"指的是在Flex Datagrid组件中集成复选框(checkbox)的功能。这种功能常用于多选操作,例如用户可以选择一组数据项进行批量删除、编辑或其他操作。下面将详细介绍如何在Flex中实现带...
在博文《flex在DataGrid中实现checkbox全选或取消》中,作者可能详细讲解了以下步骤: 1. 创建DataGrid,并绑定数据源。 2. 添加一个CheckBox组件,作为全选/取消全选的控制。 3. 实现CheckBox的change事件监听,...
在Flex编程中,数据网格(DataGrid)是用于展示大量结构化数据的组件,而ComboBox是一种下拉选择框,常用于提供用户可选择的选项。当我们需要在DataGrid的不同列中实现ComboBox的联动效果时,即在一个ComboBox的选择...
**DataGrid** 是Flex框架中的一个重要组件,用于显示数据列表。在本例中,我们使用 **DataGrid** 来展示地图上的各个图层信息。每个图层都对应着 **DataGrid** 中的一行数据。 ##### 2.1 DataGrid与图层信息结合的...
### 在Flex的DataGrid中使用CheckBox #### 一、引言 在Flex应用程序开发中,DataGrid 是一种常用的UI组件,用于展示数据列表,并提供了一系列的功能,如排序、过滤等。有时,为了增加用户交互性或实现特定功能,...
在本文中,我们将深入探讨两种在Flex或Adobe AIR应用程序中常用的组件——`DataGrid`和`AdvancedDataGrid`,特别是关于它们的CheckBox全选功能。`DataGrid`和`AdvancedDataGrid`是Flex中用于展示数据集合的强大工具...
本篇文章将深入探讨如何在`Flex DataGrid`中实现列中下拉列表(ComboBox)以及行的勾选(CheckBox)功能,这在诸如数据筛选、多选操作等场景中非常常见。 首先,我们要了解`Flex DataGrid`的基本结构。`DataGrid`由...