本文转自:http://blog.sina.com.cn/s/blog_71848dcf01012ctl.html,稍作修改

<?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"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="Init()">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.core.mx_internal;
[Bindable]
public var cloumnSelected:Boolean=false;//保存该列是否全选的属性(用户先点击全选后在手动的取消几行数据的选中状态时,这里的状态不会改变)
[Bindable]
public var headerSelected:Boolean=false;
public var selectItems:Array = new Array();//用户保存用户选中的数据
public function cleanSelectItems():void{
selectItems= new Array();
}
[Bindable]
public var dataArray:ArrayCollection = new ArrayCollection;
private function Init():void{
dataArray.addItem({dgSelected:false,name:'1.Christina Coenraets',phone:'555-219-2270',email:'ccoenraets@fictitious.com'});
dataArray.addItem({dgSelected:false,name:'2.Joanne Wall',phone:'555-219-2012',email:'jwall@fictitious.com'});
dataArray.addItem({dgSelected:false,name:'3.Maurice Smith',phone:'555-219-2012',email:'maurice@fictitious.com'});
dataArray.addItem({dgSelected:false,name:'4.Mary Jones',phone:'555-219-2000',email:'mjones@fictitious.com'});
dataArray.addItem({dgSelected:false,name:'5.God Win',phone:'555-219-2005',email:'godwin@fictitious.com'}); dataArray.addItem({dgSelected:false,name:'6.Christina Coenraets-2',phone:'555-219-2270',email:'ccoenraets@fictitious.com'});
dataArray.addItem({dgSelected:false,name:'7.Joanne Wall-2',phone:'555-219-2012',email:'jwall@fictitious.com'});
dataArray.addItem({dgSelected:false,name:'8.Maurice Smith-2',phone:'555-219-2012',email:'maurice@fictitious.com'});
dataArray.addItem({dgSelected:false,name:'9.Mary Jones-2',phone:'555-219-2000',email:'mjones@fictitious.com'});
dataArray.addItem({dgSelected:false,name:'10.God Win-2',phone:'555-219-2005',email:'godwin@fictitious.com'}); var str:String = "";
str = "as";
str = str + "aws";
} protected function btn_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
var items:Array = new Array(); var name2:String = "";
for(var i:int = 0; i<this.selectItems.length; i++){
// if(this.cloumnSelected){
// items = this.selectItems;
// var obj:Object = items[i];
// name = name + obj.name + " | ";
// }else{
//
// }
// Alert.show(name,"name"); var obj2:Object = this.selectItems[i];
name2 = name2 + obj2.name + " | ";
}
Alert.show(name2,"name2");
trace(name2);
} ]]>
</fx:Script>
<s:DataGrid id="dgUser" x="116" y="99" width="1016" height="328" dataProvider="{dataArray}">
<s:columns>
<s:ArrayList>
<s:GridColumn width="60" dataField="dgSelected" resizable="false" sortable="false">
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import spark.components.DataGrid;
import spark.components.gridClasses.GridColumn;
private var currentData:Object; //保存当前一行值的对象
protected function checkbox1_changeHandler(event:Event):void
{
// TODO Auto-generated method stub
//Alert.show(rowIndex+"");
var dg:DataGrid=this.automationOwner as DataGrid;//获取DataGrid对象
var dgDataArr:ArrayCollection = dg.dataProvider as ArrayCollection;
var selectItems:Array=this.parentApplication.selectItems;
currentData=data;
currentData.dgSelected=cbx.selected; //根据是否选中的状态,更改数据源中选中的标记
var bool:Boolean=true;
if (cbx.selected)
{
selectItems.push(currentData);
this.parentApplication.selectItems = selectItems;
abc:for(var j:int=0;j<dgDataArr.length;j++){
var obj:Object=dgDataArr[j];
var dgSelected:Boolean=obj.dgSelected;
if (dgSelected == false)
{
bool=false;
break abc;
}
}
if (bool == true)
{
this.parentApplication.headerSelected=true;
this.parentApplication.cloumnSelected = true;
}
}else{
for (var i:int=0; i < selectItems.length; i++)
{
if (selectItems[i] == currentData)
{
selectItems.splice(i, 1)//当前行checkbox为false时,从selectItems删除当前行
}
}
if(selectItems.length==0){
this.parentApplication.cloumnSelected = false;
}
this.parentApplication.headerSelected=false;
}
}
]]>
</fx:Script>
<s:HGroup>
<s:Label width="10"/>
<s:CheckBox id="cbx" change="checkbox1_changeHandler(event)"
selected="{this.parentApplication.cloumnSelected}"/>
<s:Label width="10"/>
</s:HGroup>
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
<s:headerRenderer>
<fx:Component>
<s:GridItemRenderer>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import spark.components.DataGrid;
import spark.components.gridClasses.GridColumn;
protected function selectAll_clickHandler(event:MouseEvent):void
{
var dg:DataGrid=this.automationOwner as DataGrid;//获取DataGrid对象
var dgDataArr:ArrayCollection = dg.dataProvider as ArrayCollection;
//更改列的全选状态
// if(this.parentApplication.cloumnSelected){
// this.parentApplication.cloumnSelected = false;
// }else{
// this.parentApplication.cloumnSelected = true;
// }
if(selectAll.selected){
this.parentApplication.headerSelected=false;
this.parentApplication.cloumnSelected = false;
this.parentApplication.headerSelected=true;
this.parentApplication.cloumnSelected = true;
}else {
this.parentApplication.headerSelected=true;
this.parentApplication.cloumnSelected = true;
this.parentApplication.headerSelected=false;
this.parentApplication.cloumnSelected = false;
}
parentApplication.selectItems = new Array();//重新初始化用于保存选中列的对象
if(this.parentApplication.cloumnSelected){//如果为全部选中的化就将数据源赋值给column.selectItems,不是就不管他,上一步已经初始化为空
parentApplication.selectItems = (dg.dataProvider as ArrayCollection).toArray();
}
if(dgDataArr.length>0){
if(dgDataArr[0]!=""){
for(var i:int = 0; i < dgDataArr.length ; i++){
// Object(dgDataArr).dgSelected = this.parentApplication.cloumnSelected;//更改没一行的选中状态
Object(dgDataArr[i]).dgSelected = this.parentApplication.cloumnSelected;//更改没一行的选中状态
}
}
}
dgDataArr.refresh();//刷新数据源,达到强制更新页面显示效果的功能,防止在使用时没有在VO类中使用绑定而出现点击全选页面没有更改状态的错误
//Alert.show(this.parentApplication.DataGrid3.dataProvider.length);
}
]]>
</fx:Script>
<s:HGroup>
<s:Label paddingTop="5" text=" 全选 "/>
<s:CheckBox id="selectAll" click="selectAll_clickHandler(event)"
selected="{this.parentApplication.headerSelected}"/>
<s:Label width="10"/>
</s:HGroup>
</s:GridItemRenderer>
</fx:Component>
</s:headerRenderer>
</s:GridColumn>
<s:GridColumn dataField="name" headerText="姓名"/>
<s:GridColumn dataField="phone" headerText="电话"/>
<s:GridColumn dataField="email" headerText="邮件"/>
</s:ArrayList>
</s:columns>
</s:DataGrid>
<s:Button x="116" y="50" id="btn" label="button" click="btn_clickHandler(event)"/> </s:Application>

Flex4.6 DataGrid GridItemRenderer宣染器的更多相关文章

  1. Flex4/Flash开发在线音乐播放器 , 含演示地址

    要求 必备知识 本文要求基本了解 Adobe Flex编程知识和JAVA基础知识. 开发环境 MyEclipse10/Flash Builder4.6/Flash Player11及以上 演示地址 演 ...

  2. flex4 s:Datagrid <s:typicalItem

    <s:DataGird <s:typicalItem 这个标签相信大家很陌生吧, 我也是今天准备讲的时候才看到,估计是 flex4.5.1 新加东西,果然摸索 了下,这个标签作用也蛮好用的 ...

  3. ArcGIS API For Javascript_4.8-渲染器SimpleRenderer

    SimpleRenderer require(["esri/renderers/SimpleRenderer"], function(SimpleRenderer) { /* co ...

  4. ArcGIS API For Javascript_4.8-渲染器Renderer

    渲染器:Renderer 类:esri / renderers / Renderer 继承: Renderer->Accessor 子类: ClassBreaksRenderer , Heatm ...

  5. Flex4 DataGrid实现可复制单元格,同时解决自定义GridItemRenderer出现1009错误的方法

    原创内容,如需转载,请注明出处,谢谢 最近在项目中发现Flex的DataGrid不支持内容复制,在涉及到保护敏感数据时倒是很有用处,但大部分情况下,我们还是希望客户能够直接复制DataGrid单元格中 ...

  6. Flex4+BlazeDS+JAVA+MySql 构建J2EE工程 对用户信息进行管理实例

    要求 必备知识 本文要求基本了解 Adobe Flex编程知识和JAVA基础知识. 开发环境 MyEclipse10/Flash Builder4.6/Flash Player11及以上 演示地址 演 ...

  7. 07 Django REST Framework 解析器与渲染器

    01-解析器 REST 框架包括一些内置的Parser类,允许你接受各种媒体类型的请求.还支持定义自己的自定义解析器,这使你可以灵活地设计API接受的媒体类型. 注意: 开发客户端应用程序时应该始终记 ...

  8. jeecg自定义datagrid查询

    为什么要写这篇文章? 我们了解,使用 jeecg 提供的 CriteriaQuery 查询方式,确实能满足绝大数的需求,但是往往有那么个比较复杂的情况,需要我们直接去写 sql,比如多表查询呀等等等等 ...

  9. JEECG中datagrid方法自定义查询条件

    自定义加添加查询条件的用法: CriteriaQuery cq = new CriteriaQuery(EquipmentEntity.class, dataGrid); //查询条件组装器 org. ...

随机推荐

  1. 辽宁OI2016夏令营模拟T3-chess

    放棋子(chess.pas/c/cpp)题目大意现在有一个 n*m 的棋盘,现在你需要在棋盘上摆放 2n 个棋子,要求满足如下条件:1. 每一列只能有一个棋子:2. 每一行的前 xi 个格子有一个棋子 ...

  2. express学习点滴- 永远不要忘记异步

    直接上两段代码,因为nodejs基于异步和事件回调的解决方式,涉及到异步的时候,问题往往藏得很深,以下这个简单的问题困扰了很久.之前怀疑是各种问题,到处改.直到最后一步一步跟代码,跟操作数据库部分豁然 ...

  3. python网络编程 — HTTP客户端

    A simple http client. It gets the contents of special webserver page and print it.(Default path is & ...

  4. win10桌面和手机的扩展API,判断是否有实体后退键API

    喜大普奔的win10 uap开发预览版终于出了,这次更新跟8.1的变化不是很大,但是将原本win8.1和wp8.1uap的分项目的形式,改为了整合成一个项目,经过一次编译打包成一个appx包,实现了无 ...

  5. C 语言字符数组的定义与初始化

    1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'} ...

  6. web.py 学习(-)Rocket web框架

    Rocket是一个轻量级,多线程,符合WSGI规范的web框架. Rocket使用一个线程监听连接,接收到连接之后放到Queue中,有worker线程进行处理. Rocket含有以下属性: metho ...

  7. JVM基础(3)-多态性实现机制

    一.方法解析 Class 文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在 Class 文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址. 因此,想要使用这些符号引用 ...

  8. C# 语言规范_版本5.0 (第1章 介绍)

    1. 介绍 C#(读作“See Sharp”)是一种简洁.现代.面向对象且类型安全的编程语言.C# 起源于 C 语言家族,因此,对于 C.C++ 和 Java 程序员,可以很快熟悉这种新的语言.C# ...

  9. java对数计算

    Java对数函数的计算方法非常有问题,然而在API中却有惊人的误差.但是假如运用了以下的方法,用Java处理数字所碰到的小麻烦就可以轻而易举的解决了. Sun的J2SE提供了一个单一的Java对数方法 ...

  10. Matlab - 矩阵基本操作

    1. 矩阵的输入 右值是用方括号表示: , 逗号或空格分隔元素     ; 分号分隔行 >> A = [-, ; , ] A = - 2. 矩阵的加减 >> C = A + B ...