以下の例に示すように、独自のカスタムAdvanceDatagridを作成します。並べ替えられた列の配列と順序があります。cutomイベントを送信し、この配列を渡します。サーバー側のTechはそれに応じてクエリを実行し、結果を返します。
import mx.events.CollectionEvent;
import mx.binding.utils.BindingUtils;
import mx.collections.SortField;
import mx.collections.Sort;
import mx.collections.ArrayCollection;
import mx.events.AdvancedDataGridEvent;
private var sortOrder:Boolean = true;
[Bindable]
public var headerHt:int = 30;
[Inspectable(defaultValue="true", type="Boolean", enumeration="true,false", inherit="yes")]
[Bindable]
public var allowHeaderWordWrap:Boolean = true;
public function sortCaseInsensitive(event:AdvancedDataGridEvent):void{
var genericDataProvider:Object = this.dataProvider as Object;
sortOrder = !sortOrder;
//genericDataProvider.sort = new Sort();
if(genericDataProvider.sort == null){
genericDataProvider.sort = new Sort();
}
var sortField:SortField = new SortField(event.dataField,true,sortOrder);
switch (event.dataField) {
case "assmtId":
sortField.numeric = true;
break;
}//switch
//genericDataProvider.sort.fields = [sortField];
if(genericDataProvider.sort.fields == null){
genericDataProvider.sort.fields = [sortField];
}else{
//if dataField is not already present in sort fields array
if(genericDataProvider.sort.fields.indexOf(sortField) != -1){
genericDataProvider.sort.fields = genericDataProvider.sort.fields.concat(sortField);
}
}
genericDataProvider.refresh();
// Send custom event to server and pass the array of sort to it the server side technology will make dynamic query and return the result
}//sortCaseInsensitive
]]>
</mx:Script>