加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex ArrayCollection 之排序

发布时间:2020-12-15 00:58:07 所属栏目:百科 来源:网络整理
导读:? 利用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;??
?
利用ArrayCollection的sort属性
  1. <?xml version="1.0" encoding="utf-8"?>??
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">??
  3. ???? <mx:Script>??
  4. ???????? <![CDATA[??
  5. ????????????import mx.collections.SortField;??
  6. ????????????import mx.collections.Sort;??
  7. ????????????import mx.collections.ArrayCollection;??
  8. ????????????private var acSort:ArrayCollection=??
  9. ????????????newArrayCollection([{id:0,userName:"zhangSan",age:21},??
  10. ???????????????????????????????? {id:2,userName:"liSi",age:24},255)">???????????????????????????????? {id:1,userName:"wangWu",age:31}]);??
  11. ??????????????
  12. ????????????private function sortAc():ArrayCollection{??
  13. ???????????????? var sort:Sort=new Sort();??
  14. ????????????????//按照ID升序排序??
  15. ???????????????? sort.fields=[new SortField("id")];??
  16. ??????????????????
  17. ????????????????//按照userName降序排序??
  18. ???????????????? sort.fields=[new SortField("userName",true,true)];??
  19. ????????????????//先按ID升序,再按userName降序??
  20. ???????????????? sort.fields[new SortField("id"),new SortField("userName",255)">???????????????? acSort.sort=sort;??
  21. ???????????????? acSort.refresh();//更新??
  22. ????????????????return acSort;??
  23. ???????????? }??
  24. ??????????
  25. ???????? ]]>??
  26. ???? </mx:Script>??
  27. </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",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,或
-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"},dob:"07/30/1990"},dob:"07/30/1986"}]); var sort:Sort = new Sort(); sort.compareFunction = sortFunction; arrColl.sort = sort; arrColl.refresh(); trace(arrColl); }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读