带有复选框的数据网格DataGrid
发布时间:2020-12-15 03:37:41 所属栏目:百科 来源:网络整理
导读:首先说一下用处吧,在数据网格(DataGrid或者AdvancedDataGrid)每一行有了复选框之后我们便可以用来进行批量删除工作了。 1. 创建每一行中的复选框渲染器CheckBoxItemRenderer //文件CheckBoxItemRenderer.as代码如下 package org.xjh.components{import fl
首先说一下用处吧,在数据网格(DataGrid或者AdvancedDataGrid)每一行有了复选框之后我们便可以用来进行批量删除工作了。 1. 创建每一行中的复选框渲染器CheckBoxItemRenderer //文件CheckBoxItemRenderer.as代码如下 package org.xjh.components{ import flash.events.Event; import mx.collections.ArrayCollection; import mx.controls.CheckBox; import mx.controls.DataGrid; /** * 功能:每一行中的复选框渲染器 * 创建时间:2014-9-23 下午05:10:36 * 修改时间: * 作者:xujianhua */ public class CheckBoxItemRenderer extends CheckBox { private var rowDataObj:Object; //保存一行值的对象 public function CheckBoxItemRenderer(){ //为本复选框加入状态改变事件处理器 this.addEventListener(Event.CHANGE,changeHandler); } //这个方法将由flex自动调用,value将传入的是封装一行数据的对象(一般是ArrayCollection中的一个对象) override public function set data(value:Object):void { this.rowDataObj = value; //记住一行的对象 this.selected = (value.selected == "true") ? true:false;//修改当前this复选框的选择状态 } private function changeHandler(event:Event):void { //每当行中的复选框选择状态改变时,也将修改行对象的selected属性,注意这个selected是一个动态属性 rowDataObj.selected = this.selected.toString(); } } } //文件CheckBoxHeaderRenderer.as代码 package org.xjh.components{ import flash.events.Event; import flash.events.MouseEvent; import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.controls.CheckBox; import mx.controls.DataGrid; import mx.events.DataGridEvent; /** * 功能:复选框列的顶部复选框渲染器(headerRenderer) * 创建时间:2014-9-23 下午05:13:22 * 修改时间: * 作者:xujianhua */ public class CheckBoxHeaderRenderer extends CheckBox{ public function CheckBoxHeaderRenderer(){ //为本复选框加入状态改变事件处理器 this.addEventListener(Event.CHANGE,clickHandlers); } override public function set data(value:Object):void { //指示用户在列标题上按下和释放鼠标。 DataGrid(listData.owner).addEventListener( DataGridEvent.HEADER_RELEASE,sortEventHandler); } private function sortEventHandler(event:DataGridEvent):void { if (event.itemRenderer == this) event.preventDefault(); //阻止在这一列上的排序操作 } //点击顶部复选框,则将相应的选中状态反映到每一行的复选框中 private function clickHandlers(event:Event):void { //得到每一行的集合 var arrColl:ArrayCollection = DataGrid(listData.owner).dataProvider as ArrayCollection; for(var i:int = 0; i < arrColl.length; i++){ // 将相应的选中状态反映到每一行的复选框中 //注意这个selected是一个动态属性 arrColl.getItemAt(i).selected = (event.currentTarget.selected).toString(); } //刷新每一行的视图状态(复选框的选中状态) arrColl.refresh(); } } } <?xml version="1.0" encoding="utf-8"?> <!-- 功能:带有复选框的数据网格(可以用来进行批量删除工作) 创建时间:2014-9-23 下午05:15:43 修改时间: 作者:xujianhua --> <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" minWidth="955" minHeight="600" > <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.Alert; [Bindable] private var employeeList:ArrayCollection = new ArrayCollection( [ {id:"E201400001",name:"张三1",birthday:"1991-6-5"},{id:"E201400002",name:"张三2",birthday:"1992-6-5"},{id:"E201400003",name:"张三3",birthday:"1993-6-5"},{id:"E201400004",name:"张三4",birthday:"1994-6-5"},{id:"E201400005",name:"张三5",birthday:"1995-6-5"},{id:"E201400006",name:"李四1",birthday:"1989-5-6"},{id:"E201400007",name:"李四2",{id:"E201400008",name:"李四3",{id:"E201400009",name:"李四4",birthday:"1988-5-4"},{id:"E201400010",name:"李四5",birthday:"1987-4-2"},{id:"E201400011",name:"王五1",birthday:"1985-3-1"} ] ); private function getAllSelectedBT_clickHandler(event:MouseEvent):void { for(var i:int = 0; i < employeeList.length; i++){ //注意这个selected是一个动态属性 if(employeeList.getItemAt(i).selected == 'true'){ //这里您可以获取每一选中行的任何属性列的值,作为测试这里用name属性 Alert.show(employeeList.getItemAt(i).name,"您所选中的行的name值为"); } } } ]]> </fx:Script> <s:VGroup x="10" y="10"> <mx:DataGrid dataProvider="{employeeList}" x="10" y="10"> <mx:columns> <mx:DataGridColumn itemRenderer="org.xjh.components.CheckBoxItemRenderer" headerRenderer="org.xjh.components.CheckBoxHeaderRenderer" /> <mx:DataGridColumn dataField="id" headerText="员工编号" /> <mx:DataGridColumn dataField="name" headerText="员工姓名" /> <mx:DataGridColumn dataField="birthday" headerText="员工生日" /> </mx:columns> </mx:DataGrid> <mx:Button label="获取选中的" id="getAllSelectedBT" click="getAllSelectedBT_clickHandler(event)"/> </s:VGroup> </s:Application> 4. 测试 4.1 未选中状态 4.2 选中一条并获取 4.3 选中两条并获取 4.4 选中全部并获取(由于弹出太多框导致数据网格内容被完全遮罩) 依次点击弹出框的确定按钮后便逐渐显示数据网格中的内容了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |