最近又开始使用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; } }
效果图: