`
远去的渡口
  • 浏览: 467635 次
  • 性别: Icon_minigender_2
  • 来自: 上海转北京
社区版块
存档分类
最新评论

flex中ArrayCollect对象如何排序

    博客分类:
  • flex
 
阅读更多

最近又开始使用flex了,将近大半年的时间没有flexBuilder工具开发了,有点点生疏了,好在写ActionScript比javaScript爽多了,最最关键的是有提示,所以感觉还是非常不错滴~

    这次做的是点菜模块,功能挺简单,就是细节点挺多的。其中菜品类别这一块,有一个需求是编号是允许手工输入,新增菜品时将序号自动写为当前序号最大值+1,保存以后再次打开窗口,菜品类别需要按编号由小到大排序展示。

 第一步:按编号排序的需求

基本步骤:
(1)、创建新的Sort对象
(2)、创建一个或多个SortField对象
(3)、将SortField对象的数组赋值给Sort对象的fields属性
(4)、将Sort对象指定为ArrayCollection的sort属性
(5)、调用ArrayCollection的refresh()方法应用排序

我的这部分代码:

原始的ArrayCollect中的对象:

[Bindable]public var categroyArray:ArrayCollection = new ArrayCollection(
            [ {label:"热菜", data:'1', cOrder:'1'}, 
              {label:"主食", data:'2', cOrder:'5'},  
              {label:"凉菜", data:'3', cOrder:'9'},
              {label:"甜品", data:'4', cOrder:'4'}
               ]);

 

 

 

排序方法:

private function sortByOrder(categoryArray:ArrayCollection):ArrayCollection{
     if(categoryArray == null || categoryArray.length == 0){
      return null;
}else{
        var sort:Sort = new Sort();
        sort.fields = [new SortField("cOrder")];//如果比较的是数字类型,此处不能写 
// sort.fields = [new SortField("cOrder",true)];
//,这样就会变为字符串比较,当有1,23,9,87这样1位和2位数字时,会只按十位数比较。排序后是
//1 23 87 9这样就不对了
	categoryArray.sort = sort;
	categoryArray.refresh();
	return categoryArray;
     }
 }

  效果图:

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics