- 浏览: 421696 次
- 性别:
- 来自: 成都
-
文章分类
最新评论
-
kaihop:
很好,值得学习
Axis2开发WebService客户端 的3种方式 -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
Java解决Emoji表情符问题 -
hongbai:
不能匹配这个:http://harveyzeng.iteye. ...
正则表达式匹配域名、网址、url -
qwertyuiopqaz:
引用
Axis2开发WebService客户端 的3种方式 -
whj001:
很详细 ,
Axis2开发WebService客户端 的3种方式
本文使用DataGrid的headerRenderer 和itemRenderer ,设计一个的DataGrid+Checkbox 的组件,且包括了表头多选 支持。
[主程序源码(application.mxml source code)] :
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- http://www.myflexhero.com/share/flex3-mx/flex-mx-core-components/flex-mx-ui-controls/flex-mx-tree-and-datagrid-controls/604 --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="*" height="500" verticalGap="0" viewSourceURL="srcview/index.html"> <mx:Script> <![CDATA[ private var arr:Array = [ { firstName: "Alex", lastName: "Harui", age: 48 }, { firstName: "Gordon", lastName: "Smith", age: 54 }, { firstName: "Deepa", lastName: "Subramanian", age: 22 }, { firstName: "Matt", lastName: "Chotin", age: 28 }, { firstName: "Ely", lastName: "Greenfield", age: 32 }, { firstName: "Kevin", lastName: "Lynch", age: 15}, { firstName: "Shantanu", lastName: "Narayan", age: 50 }, { firstName: "Joan", lastName: "Lafferty", age: 23 }, { firstName: "Ryan", lastName: "Frishberg", age: 19 }, { firstName: "Jason", lastName: "Szeto", age: 30 }, { firstName: "Mark", lastName: "Anders", age: 40 }, { firstName: "Peter", lastName: "Flynn", age: 24 }, { firstName: "Heidi", lastName: "Williams", age: 18 } ]; ]]> </mx:Script> <local:CheckBoxDataGrid id="dg" initialize="dg.dataProvider=arr" horizontalScrollPolicy="on" allowMultipleSelection="true" change="foo.text = dg.selectedIndices.toString()" > <local:columns> <mx:DataGridColumn dataField="firstName" headerText=" " width="20" sortable="false" itemRenderer="CheckBoxRenderer" headerRenderer="CheckBoxHeaderRenderer" > </mx:DataGridColumn> <mx:DataGridColumn dataField="firstName" headerText="First Name" /> <mx:DataGridColumn dataField="lastName" headerText="Last Name" /> </local:columns> </local:CheckBoxDataGrid> <mx:Label id="foo" /> </mx:Application>
[CheckBoxDataGrid.as源码] :
package { import flash.display.Sprite; import flash.events.KeyboardEvent; import mx.controls.CheckBox; import mx.controls.DataGrid; import mx.controls.listClasses.IListItemRenderer; /** * DataGrid that uses checkboxes for multiple selection */ public class CheckBoxDataGrid extends DataGrid { override protected function selectItem(item:IListItemRenderer, shiftKey:Boolean, ctrlKey:Boolean, transition:Boolean = true):Boolean { // only run selection code if a checkbox was hit and always // pretend we're using ctrl selection if (item is CheckBox) return super.selectItem(item, false, true, transition); return false; } // turn off selection indicator override protected function drawSelectionIndicator( indicator:Sprite, x:Number, y:Number, width:Number, height:Number, color:uint, itemRenderer:IListItemRenderer):void { } // whenever we draw the renderer, make sure we re-eval the checked state override protected function drawItem(item:IListItemRenderer, selected:Boolean = false, highlighted:Boolean = false, caret:Boolean = false, transition:Boolean = false):void { if (item is CheckBox) CheckBox(item).invalidateProperties(); super.drawItem(item, selected, highlighted, caret, transition); } // fake all keyboard interaction as if it had the ctrl key down override protected function keyDownHandler(event:KeyboardEvent):void { // this is technically illegal, but works event.ctrlKey = true; event.shiftKey = false; super.keyDownHandler(event); } } }
[CheckBoxRenderer.as源码] :
package { import flash.display.DisplayObject; import flash.events.KeyboardEvent; import flash.events.MouseEvent; import flash.text.TextField; import mx.controls.CheckBox; import mx.controls.dataGridClasses.DataGridListData; import mx.controls.listClasses.ListBase; /** * The Renderer. */ public class CheckBoxRenderer extends CheckBox { public function CheckBoxRenderer() { focusEnabled = false; } override public function set data(value:Object):void { super.data = value; invalidateProperties(); } override protected function commitProperties():void { super.commitProperties(); if (owner is ListBase) selected = ListBase(owner).isItemSelected(data); } /* eat keyboard events, the underlying list will handle them */ override protected function keyDownHandler(event:KeyboardEvent):void { } /* eat keyboard events, the underlying list will handle them */ override protected function keyUpHandler(event:KeyboardEvent):void { } /* eat mouse events, the underlying list will handle them */ override protected function clickHandler(event:MouseEvent):void { } /* center the checkbox if we're in a datagrid */ override protected function updateDisplayList(w:Number, h:Number):void { super.updateDisplayList(w, h); if (listData is DataGridListData) { var n:int = numChildren; for (var i:int = 0; i < n; i++) { var c:DisplayObject = getChildAt(i); if (!(c is TextField)) { c.x = (w - c.width) / 2; c.y = 0; } } } } } }
[CheckBoxHeaderRenderer.as源码] :
package { import flash.display.DisplayObject; import flash.events.Event; import flash.events.KeyboardEvent; import flash.events.MouseEvent; import flash.text.TextField; import mx.controls.CheckBox; import mx.controls.dataGridClasses.DataGridListData; import mx.controls.listClasses.ListBase; /** * The Renderer. */ public class CheckBoxHeaderRenderer extends CheckBox { public function CheckBoxHeaderRenderer() { focusEnabled = false; } override public function set data(value:Object):void { invalidateProperties(); } private var addedListener:Boolean = false; private var partiallySelected:Boolean = false; override protected function commitProperties():void { super.commitProperties(); if (owner is ListBase) { if (!addedListener) { addedListener = true; owner.addEventListener("valueCommit", owner_changeHandler, false, 0, true); owner.addEventListener("change", owner_changeHandler, false, 0, true); } if (ListBase(owner).dataProvider.length == ListBase(owner).selectedItems.length) { selected = true; partiallySelected = false; } else if (ListBase(owner).selectedItems.length == 0) { selected = false; partiallySelected = false; } else { selected = false; partiallySelected = true; } invalidateDisplayList(); } } /* eat keyboard events, the underlying list will handle them */ override protected function keyDownHandler(event:KeyboardEvent):void { } /* eat keyboard events, the underlying list will handle them */ override protected function keyUpHandler(event:KeyboardEvent):void { } override protected function clickHandler(event:MouseEvent):void { if (selected) { // uncheck everything ListBase(owner).selectedIndex = -1; } else { var n:int = ListBase(owner).dataProvider.length; var arr:Array = []; for (var i:int = i; i < n; i++) arr.push(i); ListBase(owner).selectedIndices = arr; } } /* center the checkbox if we're in a datagrid */ override protected function updateDisplayList(w:Number, h:Number):void { super.updateDisplayList(w, h); graphics.clear(); if (listData is DataGridListData) { var n:int = numChildren; for (var i:int = 0; i < n; i++) { var c:DisplayObject = getChildAt(i); if (!(c is TextField)) { c.x = (w - c.width) / 2; c.y = 0; c.alpha = 1; if (partiallySelected) { graphics.beginFill(0x000000); graphics.drawRect(c.x, c.y, c.width, c.height); graphics.endFill(); c.alpha = 0.7; } } } } } private function owner_changeHandler(event:Event):void { invalidateProperties(); } } }
发表评论
-
IList 、 ICollectionView与IViewCursor
2012-06-12 22:10 1215IList、ICollectionView与IViewCurs ... -
DataGrid中的ItemRenderder如何获得rowIndex或columnIndex
2012-06-01 10:08 1489这两天看了一下ItemRenderer, 看到DataGr ... -
深入理解FLEX组件生命周期[转]
2012-05-30 09:49 11581、生命周期( LifeCycle )简述 ... -
Actionscript学习笔记
2011-12-28 09:17 18811、 addEventListener() 方法有两个参数: ... -
How to clone (duplicate) an object in ActionScript 3
2011-10-21 16:12 1456For a project I needed to clone ... -
[Bindable]分析
2011-08-29 15:00 943[Bindable]大概又是Flex用得最多的元数据了。刚开始 ... -
UIComponent的生命周期(life cycle)
2011-08-25 11:02 904写flex组件,了解UIComponent的生命周期(life ... -
关于一些Flex的面试集锦-组件(网摘)
2011-08-25 10:55 11621.我不想在容器里显示滚动条怎么办? 答:指定horizo ... -
Flex中的弹出窗口(mx.managers.PopUpManager) (收集)
2011-08-20 10:07 1260flex PopUpManager类 PopUpMana ... -
一名优秀的Flex开发者需要知道的10样东西(网摘)
2011-08-12 23:46 9191、面向对象编程(OOP) A ...
相关推荐
Flex的DataGrid中使用CheckBox. 大家共同研究
在标题“Flex Datagrid checkbox实现”中,讨论的核心是Datagrid中集成复选框(checkbox)的功能。 在Flex Datagrid中实现复选框功能,主要是通过添加一个自定义的列renderer来完成。Renderer是Datagrid中的一个小...
### 在Flex的DataGrid中使用CheckBox #### 一、引言 在Flex应用程序开发中,DataGrid 是一种常用的UI组件,用于展示数据列表,并提供了一系列的功能,如排序、过滤等。有时,为了增加用户交互性或实现特定功能,...
在Flex的DataGrid中,我们可以为每一行添加CheckBox,这样用户就可以通过点击CheckBox来选择或取消选择特定的行。这在需要多选操作的场景中非常实用,比如用户需要批量处理某些数据。 二、设置CheckBox的默认状态 ...
在Flex开发中,数据网格(DataGrid)是用于展示数据集合的强大组件,它允许用户以表格形式查看和操作数据。本示例关注的是在DataGrid中嵌套复选框(Checkbox),并实现全选功能。这在需要用户批量选择或操作数据的...
在Flex开发中,数据网格(DataGrid)是一种常用的组件,用于展示结构化的数据。当我们需要在数据网格中实现复选框功能,以便用户可以多选数据行时,通常会遇到两个主要需求:一是如何在标题栏添加复选框,二是如何使...
对于行中的checkbox,你可以在数据源中定义对应的字段,Flex会自动使用默认的`CheckBoxItemRenderer`。 总结起来,实现Flex Datagrid checkbox全选功能主要涉及自定义数据列、表头渲染器和行渲染器,通过事件监听和...
在IT行业中,尤其是在Web开发领域,Flex是一种广泛使用的ActionScript框架,它允许开发者构建富互联网应用程序(RIA)。本文将深入探讨如何在Flex中的DataGrid组件中实现复选框的全选与取消全选功能,这对于数据操作...
根据给定的信息,本文将详细解释如何在Flex中实现DataGrid中的checkbox全选或取消功能。这涉及到Flex的checkbox管理、事件监听与处理、以及如何使用Cairngorm框架进行模型层更新等内容。 ### 一、理解Flex DataGrid...
本文将深入探讨如何在Flex的DataGrid中使用复选框,并实现全选和单选功能。 首先,我们需要在DataGrid的列定义中添加一个CheckBox组件。在MXML中,你可以通过以下方式创建一个包含复选框的列: ```xml 选择"> ...
其中包含一个三种状态的checkbox,DataGrid代码中引用了 带多选框的DataGrid(AdvancedDataGrid) 表头有全选CheckBox,三种状态:全选、部分选择、无选择 如果改变目录结构,需要在CustomCheckBox.mxml中更改inner....
"flex datagrid checkbox实现源码"这个主题就是关于如何在Flex DataGrid中集成并正确管理复选框功能的。 1. **Flex DataGrid基础** Flex DataGrid是Adobe Flex框架中的一种组件,用于显示和编辑大量结构化的数据。...
在Flex开发中,数据网格(DataGrid)是用于展示大量结构化数据的组件,它可以提供丰富的功能,如排序、分页、编辑等。在实际应用中,我们有时需要在DataGrid的每一行中插入多个复选框(Checkbox),以便用户能够进行...
在Flex开发中,数据网格(DataGrid)是一种常用的组件,用于展示和操作大量结构化数据。在实际应用中,我们经常需要在DataGrid的列中嵌套复选框(Checkbox),以便用户可以进行多选操作或者对数据进行勾选状态的设置...
本文将详细讨论如何在Flex DataGrid中实现全选和反选功能,并结合`checkBox`来优化这一过程。 首先,我们要理解DataGrid的结构。DataGrid由多个列组成,每一列可能包含不同类型的控件,如文本、图像或复选框。在...
总结,Flex中的DataGrid与CheckBox的结合使用,提供了一种直观且用户友好的方式来处理表格数据。通过创建自定义列和渲染器,我们可以轻松地实现选中状态的管理,同时支持全选/全不选等高级功能。注意在实现这些功能...
要在DataGrid中使用自定义的渲染器,我们需要在DataGrid的配置中指定`headerRenderer`和`itemRenderer`属性。 ```as <mx:DataGrid id="myDataGrid"> 选项" headerRenderer="utils.itemrender.CheckBoxRender" ...
接下来,我们需要在MXML文件(例如dazhiTestDemo.mxml)中使用这个自定义列类。在DataGrid的columns属性中,我们可以创建一个CustomGridColumn实例,并将其dataField设置为一个特定的标识字段,这样我们可以通过这个...
在本文中,我们将深入探讨两种在Flex或Adobe AIR应用程序中常用的组件——`DataGrid`和`AdvancedDataGrid`,特别是关于它们的CheckBox全选功能。`DataGrid`和`AdvancedDataGrid`是Flex中用于展示数据集合的强大工具...
标题"flex-带checkbox的datagrid"指的是在Flex Datagrid组件中集成复选框(checkbox)的功能。这种功能常用于多选操作,例如用户可以选择一组数据项进行批量删除、编辑或其他操作。下面将详细介绍如何在Flex中实现带...