您的位置:首页 > 其它

Flex ArrayCollection 之排序

2011-12-31 16:10 417 查看
利用ArrayCollection的sort属性

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.collections.SortField;
import mx.collections.Sort;
import mx.collections.ArrayCollection;
private var acSort:ArrayCollection=
newArrayCollection([{id:0,userName:"zhangSan",age:21},
{id:2,userName:"liSi",age:24},
{id:1,userName:"wangWu",age:31}]);

private function sortAc():ArrayCollection{
var sort:Sort=new Sort();
//按照ID升序排序
sort.fields=[new SortField("id")];

//按照userName降序排序
sort.fields=[new SortField("userName",true,true)];

//先按ID升序,再按userName降序
sort.fields[new SortField("id"),new SortField("userName",true,true)];
acSort.sort=sort;
acSort.refresh();//更新
return acSort;
}

]]>
</mx:Script>
</mx:Application>

因为数组可被多个SortFields 排序,Sort 对象的fields 属性就是一个数组。这些sort 创建一

个层级的结构,所有对象进行分组排序,先根据field 属性里的第一个SortField 对象,再第

一个,以此类推。这个例子代码先根据regions 再states 对集合进行排序:

coll = new ArrayCollection{[{city:"Cleveland", state:"Ohio", region:"East"},{city:"Sacramento", state:"California", region:"West"},{city:"Atlanta",state:"Georgia", region:"South"},{city:"Columbus", state:"Ohio", region:"East"}]);

var sort:Sort = new Sort();

sort.fields = [new SortField("region"), new SortField("state")];

coll.sort = sort;

coll.refresh();

对集合的日期类型数据进行排序,使用mx.utils.ObjectUtil 类的dateCompare 方法比较日期。

ObjectUtil 类提供一个dateCompare 方法用于检测两个Date 对象哪个更早。你可以用

ObjectUtil.dateCompare 方法来比较两个日期的大小。dateCompare 方法返回1, 0, 或

-1:如果值为null 或相等返回0,如果第一个值为null 或小于第二个值返回1,如果第二个值

为null 或小于第一个值返回-1:

import mx.collections.Sort; import mx.collections.ArrayCollection; import mx.utils.ObjectUtil; private function sortFunction(a:Object, b:Object, fields:Array = null):int { var tempDateA:Date = new Date(Date.parse(a.dob)); var tempDateB:Date = new Date(Date.parse(b.dob)); return ObjectUtil.dateCompare(tempDateA, tempDateB); } private var arrColl:ArrayCollection; private function init():void { arrColl = new ArrayCollection([{name:"Josh",dob:"08/17/1983"},{name:"John",dob:"07/30/1946"},{name:"John", dob:"07/30/1990"},{name:"John",dob:"07/30/1986"}]); var sort:Sort = new Sort(); sort.compareFunction = sortFunction; arrColl.sort = sort; arrColl.refresh(); trace(arrColl); }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: