Flex4.6 DataGrid GridItemRenderer宣染器
本文转自: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宣染器的更多相关文章
- Flex4/Flash开发在线音乐播放器 , 含演示地址
要求 必备知识 本文要求基本了解 Adobe Flex编程知识和JAVA基础知识. 开发环境 MyEclipse10/Flash Builder4.6/Flash Player11及以上 演示地址 演 ...
- flex4 s:Datagrid <s:typicalItem
<s:DataGird <s:typicalItem 这个标签相信大家很陌生吧, 我也是今天准备讲的时候才看到,估计是 flex4.5.1 新加东西,果然摸索 了下,这个标签作用也蛮好用的 ...
- ArcGIS API For Javascript_4.8-渲染器SimpleRenderer
SimpleRenderer require(["esri/renderers/SimpleRenderer"], function(SimpleRenderer) { /* co ...
- ArcGIS API For Javascript_4.8-渲染器Renderer
渲染器:Renderer 类:esri / renderers / Renderer 继承: Renderer->Accessor 子类: ClassBreaksRenderer , Heatm ...
- Flex4 DataGrid实现可复制单元格,同时解决自定义GridItemRenderer出现1009错误的方法
原创内容,如需转载,请注明出处,谢谢 最近在项目中发现Flex的DataGrid不支持内容复制,在涉及到保护敏感数据时倒是很有用处,但大部分情况下,我们还是希望客户能够直接复制DataGrid单元格中 ...
- Flex4+BlazeDS+JAVA+MySql 构建J2EE工程 对用户信息进行管理实例
要求 必备知识 本文要求基本了解 Adobe Flex编程知识和JAVA基础知识. 开发环境 MyEclipse10/Flash Builder4.6/Flash Player11及以上 演示地址 演 ...
- 07 Django REST Framework 解析器与渲染器
01-解析器 REST 框架包括一些内置的Parser类,允许你接受各种媒体类型的请求.还支持定义自己的自定义解析器,这使你可以灵活地设计API接受的媒体类型. 注意: 开发客户端应用程序时应该始终记 ...
- jeecg自定义datagrid查询
为什么要写这篇文章? 我们了解,使用 jeecg 提供的 CriteriaQuery 查询方式,确实能满足绝大数的需求,但是往往有那么个比较复杂的情况,需要我们直接去写 sql,比如多表查询呀等等等等 ...
- JEECG中datagrid方法自定义查询条件
自定义加添加查询条件的用法: CriteriaQuery cq = new CriteriaQuery(EquipmentEntity.class, dataGrid); //查询条件组装器 org. ...
随机推荐
- # 欢迎使用Markdown编辑器写博客
似的发射点 甜甜 他inn他 absct{ for i 士大夫似的 胜多负少 import os import sys import subprocess import textwrap if sys ...
- openstack私有云布署实践【7.2 keystone + memcache (办公网环境)】
首先登录controller1创建keystone数据库,并赋于远程和本地访问的权限. mysql -u root -p CREATE DATABASE keystone; GRANT ALL P ...
- RTL-SDR简单介绍
Sdr 软件定义的无线电(Software Defined Radio,SDR) 是一种无线电广播通信技术,它基于软件定义的无线通信协议而非通过硬连线实现. Rtl-sdr 原身是Realtek RT ...
- Algorithm 算法
http://www.cnblogs.com/baiboy/category/723479.html 记下来,有空去看 随笔分类 - Algorithm [项目总结]自然语言处理在现实生活中运用 ...
- CSS3背景颜色渐变效果
1.firefox浏览器: background-image: -moz-linear-gradient(top , #eef9fe, #d1ecff); 2.safari.chrome浏览器: ba ...
- Docker私有仓库1
一.搭建私有仓库 #环境 Ip 192.168.0.34 X86云主机 [root@lh- /]# uname -a Linux lh- -.el7.x86_64 # SMP Thu Mar :: U ...
- kettle连接Hbase中数据导入(8)
http://wiki.pentaho.com/display/BAD/Loading+Data+into+HBase 1)下载样本文件 到官网去下载
- HDU 2955 Robberies(01背包)
Robberies Problem Description The aspiring Roy the Robber has seen a lot of American movies, and kno ...
- blur事件
blur事件是在元素失去焦点的时候触发,那么失去焦点的前提便是获得焦点. 哪些元素可以获取焦点呢? 1.超链接 2.input button textarea (without disabled) 3 ...
- UILabel设置富文本格式显示
实例化方法和使用方法 实例化方法: 使用字符串初始化 - (id)initWithString:(NSString *)str; 例: NSMutableAttributedString *Attri ...