flex中ArrayCollect對象如何排序

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

  效果圖:

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章