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