2009年10月1日 星期四

ArrayCollection的排序

ArrayCollection在Flex(Flahs Builder)中非常好用,提供了很多強大的方法,讓開發人員可以將資料玩弄於手掌之間,也常常將此類型的變數當成控制項(如DataGrid)的複雜資料來源,並且有Binding的功能。
當外部資料載入到FLEX中的ArrayCollection後,如果您需要排序裡面的資料,可以利用
ArrayCollection.Sort 這個屬性,這個屬性接受一個Sort物件,這個Sort類別用來定義設定要
排序的名稱、升降冪、大小寫是否區分等等。


[Bindable]
private var ac:ArrayCollection=new ArrayCollection([
{name:'oscar',age:30,country:'台灣'},
{name:'bob',age:55,country:'台灣'},
{name:'mary',age:30,country:'香港'},
{name:'john',age:30,country:'香港'},
])


var sort:Sort=new Sort(); //宣告一個Sort物件

// 宣告一個SortField物件,用來設定要排序的欄位
//第一個參數表示要排序的欄位名稱,此例是age
//第二個欄位和第三個欄位代表是否區分大小寫和是否降冪
var f1:SortField=new SortField("age",true,false);
var f2:SortField=new SortField("country",true,false);

//將設定好的每個SortField物件,存到一個陣列中,
//並將此Array設定給Sort物件
//因為我希望age先由小到大排序後,再排country欄位
//所以放到陣列的順序就是先放age再放country

sort.fields=new Array(f1,f2);


this.ac.sort=sort;
ac.refresh();

沒有留言:

張貼留言