2010年8月2日 星期一

Flex_ArrayCollection的操作_排序

上一篇文章有用到排序的功能,但有時候我們想要排序的欄位並不只一個,這時候該怎麼做?

在AdvancedDataGrid的元件上有一個已經寫好的多欄位排序功能,可以提供使用者利用點選的方式來決定欄位先後順序,也可以依照某一個欄位進行屬性判斷後變色,效果相當不錯。

但是如果我們希望利用程式碼來控制排序要怎麼做?
我們可以利用Sort這個controls,透過增加SortField的方式來做出多欄位排序的效果:
1. 建立排序欄位資料,(SortField第一個變數:欄位名稱、第二個變數:是否辨別大小寫、第三個變數:是否用降冪(T降 F升))

var SF1:SortField=new SortField("ID",true,false);
var SF2:SortField=new SortField("Type",true,false);
var SF3:SortField=new SortField("Level",true,false);
var SF4:SortField=new SortField("Online",true,true);

2. 將要排序的先後存入Array,下面程式碼代表排列順序為2→3→4→1。

var SortArray:Array = new Array();
SortArray.push(SF2);
SortArray.push(SF3);
SortArray.push(SF4);
SortArray.push(SF1);

3. 將Array指定給sort物件。

var sort:Sort=new Sort();
sort.fields=SortArray;

所以我們就可以製作一個介面,利用上面的程式碼,指定要排序的方式,來達到以程式碼操作的目的。(下圖為先排列上線與否,再將等級由高到低排列)

沒有留言:

張貼留言