- 浏览: 648475 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
ssxszt:
...
解决PopUpManager弹出窗口RangeError: Error #2006: 提供的索引超出范围 -
lijiajia:
木子佳 写道楼主,想要源码学习,谢谢。kajiamuzi@16 ...
DataGrid和AdvancedDataGrid CheckBox全选功能 -
juedi:
很好,是我需要的东东
Flex异常处理设计 -
暖暖fh:
大神,我想要源码,这个功能我折腾了好我啊 fuhan247@1 ...
DataGrid和AdvancedDataGrid CheckBox全选功能 -
chenzi:
一样的代码,两台机器上面,完全不同的报错。。Flex实现htt ...
Flex使用Https协议
<?xml version="1.0" encoding="utf-8"?> <!-- http://blog.flexexamples.com/2007/08/23/determining-a-datagridcolumn-objects-current-sort-order/ --> <mx:Application name="DataGridColumn_sortDescending_test" xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" backgroundColor="white"> <mx:Script source="org/util/SortUtil.as"/> <mx:Script> <![CDATA[ import mx.controls.DateField; import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn; import mx.events.AdvancedDataGridEvent; import mx.utils.ObjectUtil; import mx.collections.ArrayCollection; import mx.controls.dataGridClasses.DataGridColumn; import mx.events.DataGridEvent; [Bindable] public var ac:ArrayCollection=new ArrayCollection([ {data:"-1112",label:"ad",date:"2009/11/10"}, {data:"112",label:"a",date:"2009/11/11"}, {data:"1",label:"12b",date:"2009/11/01"}, {data:"2",label:"Ass",date:"2009/11/20"}, {data:"0",label:"ass",date:"2009/11/14"}, {data:"3",label:"csx",date:"2010/11/12"}, {data:"1232",label:"cdf",date:"2009/11/13"}, {data:"4",label:"xzm",date:"2001/12/10"}, {data:"345",label:"awq",date:"2009/01/10"} ]); ]]> </mx:Script> <mx:DataGrid id="dataGrid" rowCount="10" dataProvider="{ac}" headerRelease="dataGridSort(event)" width="600"> <mx:columns> <mx:DataGridColumn dataField="label" headerText="字符串" /> <mx:DataGridColumn dataField="data" headerText="数字"/> <mx:DataGridColumn dataField="date" headerText="日期"/> </mx:columns> </mx:DataGrid> <mx:AdvancedDataGrid dataProvider="{ac}" headerRelease="advancedDataGridSort(event)" width="600" rowCount="10"> <mx:columns> <mx:AdvancedDataGridColumn dataField="label" headerText="字符串" /> <mx:AdvancedDataGridColumn dataField="data" headerText="数字" /> <mx:AdvancedDataGridColumn dataField="date" headerText="日期" /> </mx:columns> </mx:AdvancedDataGrid> </mx:Application>
flex默认的排序只支持string和numer两种排序,从数据库中读出数据到flex前段,很多时候本来是Number类型转化为了Strng类型(java中的Bigdecimal ,因为As3中没有这么大的数据类型),因此排序就乱了。自己动手写了个方法在点击列头上的排序按钮的时候重置此列的排序函数。另外本方法还支持日期格式,当期是有局限的。
用法:在需要排序的表格上加上headerRelease事件。
// ActionScript file 韩敬诺 dataGrid排序 备注:flex的灵魂是事件 import mx.controls.DateField; import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn; import mx.controls.dataGridClasses.DataGridColumn; import mx.events.AdvancedDataGridEvent; import mx.events.DataGridEvent; import mx.utils.ObjectUtil; /** * 点击dataGrid列头上的排序按钮 */ public function dataGridSort(evt:DataGridEvent):void { //1 得到要排序的列 var column:DataGridColumn = DataGridColumn(evt.currentTarget.columns[evt.columnIndex]); //2 得到列名 var columnName:String=column.dataField; //3 重写此列的排序函数 column.sortCompareFunction=function(obj1:Object,obj2:Object):int{ return superSort(obj1,obj2,columnName); }; } /** * 点击AdvancedDataGrid列头上的排序按钮 */ private function advancedDataGridSort(evt:AdvancedDataGridEvent):void { var column:AdvancedDataGridColumn = AdvancedDataGridColumn(evt.currentTarget.columns[evt.columnIndex]); var columnName:String=column.dataField; column.sortCompareFunction=function(obj1:Object,obj2:Object):int{ return superSort(obj1,obj2,columnName); }; } /** * 根据不同的数据类型选择不同的排序方式 优先级是数字、日期、字符串 */ public function superSort(obj1:Object,obj2:Object,columnName:String):int{ //验证数据类型 Numbe Date String if(!isNaN(obj1[columnName])){ return number_sortCompareFunc(obj1,obj2,columnName); } if(strIsDate(obj1[columnName])){ var inputFormat:String=getInputFormat(obj1[columnName]); return date_sortCompareFunc(obj1,obj2,columnName,inputFormat); } return string_sortCompareFunc(obj1,obj2,columnName); } /** * 日期的排序 */ private function date_sortCompareFunc(obj1:Object, obj2:Object,columnName:String,inputFormat:String):int { var date1:Date =DateField.stringToDate(obj1[columnName],inputFormat); var date2:Date =DateField.stringToDate(obj2[columnName],inputFormat); return ObjectUtil.dateCompare(date1, date2); } /** * 字符串的排序 */ private function string_sortCompareFunc(obj1:Object, obj2:Object,columnName:String):int{ var str1:String=obj1[columnName]; var str2:String=obj2[columnName]; return ObjectUtil.stringCompare(str1, str2,false); } /** * 数字的排序 */ private function number_sortCompareFunc(obj1:Object, obj2:Object,columnName:String):int{ var num1:Number=Number(obj1[columnName]); var num2:Number=Number(obj2[columnName]); return ObjectUtil.numericCompare(num1,num2); } /** * 验证一个字符串是否是日期格式 */ private function strIsDate(str:String):Boolean{ var inputFormat:String=getInputFormat(str); //如果找不到日期表示符号则直接返回false if(inputFormat==null){ return false; } var date:Date=DateField.stringToDate(str,inputFormat); //如果是日期date不为null if(date!=null){ return true; }else{ return false; } } /** * 得到日期的格式 判断的顺序为 2009-11-12 2009/11/12 2009.11.12 */ private function getInputFormat(str:String):String{ if(str.indexOf("-")!=-1){ return "YYYY-MM-DD"; } if(str.indexOf("/")!=-1){ return "YYYY/MM/DD"; } if(str.indexOf(".")!=-1){ return "YYYY.MM.DD"; } return null; }
思路: 在做汽车的项目时,就想解决这个问题,但是一直没想到好的方法。flex是基于事件的组件开发,真是flex的真谛。排序函数很容易写,如何把要排序的列传过来是个问题,flex在干一件事情之前会触发一个事件,headerRelease是关键。
另外,也可以用DatagridColumn的sortCompareFunction进行自定义排序,
mySortCompareFunction(obj1:Object, obj2:Object):int
很多时候,我们需要判断根据obj中的那个属性进行排序比较,而不是对每个表格列进行排序。
一个比较巧妙的方法是可以利用Function。
/** * Numerically sorts a column in the DataGrid. * * @param fieldName The string name for the dataField in the column that you want to sort. */ private function numericSortByField(fieldName:String):Function { return function(obj1:Object, obj2:Object):int { var value1:Number = (obj1[fieldName] == '' || obj1[fieldName] == null) ? null : new Number(obj1[fieldName]); var value2:Number = (obj2[fieldName] == '' || obj2[fieldName] == null) ? null : new Number(obj2[fieldName]); return ObjectUtil.numericCompare(value1, value2); } }
使用很简单,如果列的数据类型是数字,可以指定列的sortCompareFunction
if(dataType=="NUMBER"){ //如果是数字则需要按照数字进行排序 dataGridColumn.sortCompareFunction=numericSortByField(dataField); }
评论
4 楼
250124797
2011-10-26
谢谢,正要可以参考
3 楼
lifengshurui
2011-08-05
谢谢分享啊,学习一下!
2 楼
荒村听雨31
2011-07-08
1 楼
bruce.peng
2009-11-23
今天正好要这个,拿来用了。谢谢
发表评论
-
图片背景使用九宫格
2012-07-24 10:20 0[Embed(source="../ass ... -
Flex弹出窗口做为Module
2012-07-23 18:00 0今天才知道原来TitleWindow也可以单独编译 ... -
Repeater使用简介
2012-05-09 19:26 1668mx组件中的Repeater类似与sprak中的Da ... -
Flex失效机制
2012-02-29 17:19 3025一、什么是失效机 ... -
Image倒影效果
2012-02-20 10:11 1729利用spark的BitmapImage实现倒影效果 ... -
Flex设置z轴的index
2012-02-13 14:58 4802flex4的UIComponent新增了dept ... -
得到一个字符的Unicode编码
2012-02-09 12:59 2020ActionScript 3.0String类中函数charC ... -
解决PopupManager.createPopup报错:状态“inactive”未定义
2012-02-04 21:27 2247出现这种的场景是在Module中使用弹出窗口Pop ... -
用chrome浏览器调试flex程序
2012-02-04 18:55 6926开发flex程序难免需要debug,但是IE8浏 ... -
Flash Player11不能输入中文,请谨慎升级
2011-12-18 01:04 2706很多时候,Flash的程序需要集成到其他系统中 ... -
优化Flash Builder
2011-12-18 00:54 2672Flash Builder4中新增了一个ASDO ... -
设置DataGrid的DataGridColumn的width
2011-12-18 00:42 5205DataGrid的column的width属性不 ... -
RollOver和MouseOver的不同
2011-12-12 15:03 3042共同点:都是针对鼠标的进入和进出事件。 ... -
转 Adobe移动战略失败的幕后
2011-12-08 15:56 1372最近一段时间,Adobe和Apple两个昔日的好伙 ... -
Flash Builder该这样编译,希望adboe的人能看到
2011-12-06 12:17 0从3.0开始使用flash builder,对f ... -
List或DataGrid可变行高
2011-11-29 21:57 3171默认情况下List组件是每行的行高是固定的,但 ... -
访问flex sdk版本和Flash player版本
2011-11-16 15:52 1362下面的代码将flex sdk的版本号和Fla ... -
设置TitleWindow的closeButton的mode
2011-11-16 15:42 1222默认情况下,TitleWindow的closeBu ... -
DataGrid header显示tooltip
2011-11-15 17:18 2544有时需要在DataGrid的header上显示 ... -
flash右键菜单项关键字
2011-11-15 16:26 1250有时需要在flash的右键菜单中添加 删除 ...
相关推荐
6. 排序和过滤:如何实现列的排序功能,以及如何添加过滤条件来筛选显示的数据。 7. 拖放功能:如果示例包含此功能,将介绍如何启用和自定义拖放操作,以便用户能重新排列或移动数据。 8. 响应式设计:可能还会...
标题中的“开源DataGrid和AdvancedDataGrid复制到Excel工具类”指的是一个专门设计用于将数据从Flex中的DataGrid和AdvancedDataGrid组件导出到Microsoft Excel的开源工具。这个工具类提高了用户在处理大量数据时的...
在本文中,我们将深入探讨如何在Flex中实现DataGrid和AdvancedDataGrid组件的CheckBox全选功能。这个功能在数据展示和交互式操作中非常常见,它允许用户通过一个主CheckBox来选择或取消选择所有行数据。 首先,我们...
当我们处理的数据需要进行分类或者分组时,Flex DataGrid 提供了表头分组的功能,这使得数据的展示更加有条理和易于理解。本文将详细探讨Flex DataGrid的表头分组特性及其实现方式。 首先,表头分组允许我们将数据...
在本文中,我们将深入探讨两种在Flex或Adobe AIR应用程序中常用的组件——`DataGrid`和`AdvancedDataGrid`,特别是关于它们的CheckBox全选功能。`DataGrid`和`AdvancedDataGrid`是Flex中用于展示数据集合的强大工具...
Flex Datagrid提供了许多高级特性,如排序、过滤、分页等,可以通过自定义列样式、数据提供程序和事件处理来实现。此外,还可以通过使用ItemEditor实现单元格编辑,或者通过使用AdvancedDataGrid组件来处理更复杂的...
它提供了比基本DataGrid更丰富的功能,如多级表头、排序、分组、过滤和自定义渲染等。本文将深入探讨Flex应用中的AdvancedDataGrid表头皮肤设计与实现。 AdvancedDataGrid的表头皮肤是用户界面的重要组成部分,它...
与`DataGrid`组件类似,`AdvancedDataGrid`也支持用户在数据加载完毕后对数据进行排序,不同的是它不仅支持单列排序还支持多列排序。 **实现步骤:** 1. **启用多列排序功能:** 使用`AdvancedDataGrid`时,用户...
总结来说,Flex中的DataGrid和AdvancedDataGrid是强大且灵活的数据展示工具,它们可以与其他多种控件协同工作,满足各种复杂的数据展示和交互需求。理解和掌握这些知识点,将有助于构建高效、用户友好的Flex应用程序...
Flex DataGrid提供了内置的排序功能,通过设置`sortable`属性和监听`sort`事件来实现。过滤功能通常需要编写自定义代码来实现,而分组则可以通过`grouping`属性和`AdvancedDataGrid`的`groupingEnabled`属性来开启。...
通过阅读和理解这个文件,我们可以学习到如何在实际项目中应用和改变Flex DataGrid。 总之,Flex DataGrid的自定义是一个广泛的领域,涵盖了从基本的样式调整到复杂的业务逻辑实现。通过学习和实践,开发者可以创建...
AdvancedDataGrid相比于普通的DataGrid,提供了更多的功能和自定义选项,如: 1. 多级分组:可以对数据进行多级分类和分组,使数据结构更加清晰。 2. 复杂排序:支持对列进行多种排序方式,包括升序、降序以及多个...
在Flex开发中,AdvancedDataGrid是一个强大的组件,它扩展了基本的DataGrid,提供了更复杂的数据展示和交互功能。这个主题涵盖了如何在Flex项目中有效地利用AdvancedDataGrid来实现数据的高级显示和操作。 1. **...
在Flex框架中,DataGrid是用于展示数据列表的常用组件之一。它提供了丰富的特性来处理数据,包括排序、过滤和...通过以上步骤,我们可以在Flex的DataGrid中成功实现全选和全不选功能,提升数据操作的效率和便利性。
`flex_AdvancedDataGrid实现checkBox全选功能`可能涉及到更复杂的用例,如分组、排序和过滤。在AdvancedDataGrid中,我们可能需要处理更多与数据提供者结构相关的细节,以确保全选/全不选逻辑的正确性。 7. **性能...
总之,“FLEX AdvancedDataGrid 复选框”涉及了Flex组件定制、数据绑定、事件处理、状态管理等多个方面,是提高用户交互性和功能性的关键技术。通过理解并应用这些知识,开发者可以构建出更加强大且易用的数据展示...
在Flex编程中,AdvancedDataGrid和DataGrid是两种常用的组件,用于展示数据并提供交互功能。本示例项目“Flex全选效果批量删除”聚焦于如何实现这些组件的一个实用功能,即用户可以通过全选复选框来一次性选择多个...
DataGrid和AdvancedDataGrid是Flex中用于展示表格数据的组件。书中阐述了如何利用这两个组件,包括排序、过滤和编辑数据的功能,提高数据展示的灵活性。 #### Renderers 渲染器用于自定义列表或网格中的项外观。书...
在Flex开发中,AdvancedDataGrid是一个强大的组件,用于展示大量数据并进行复杂的数据操作,如分组、排序和过滤。这个组件特别适用于构建数据密集型的用户界面,尤其是在需要显示层次结构数据时。本篇文章将深入探讨...