Ваш код в порядке, даже если это несколько примеров, когда числовые и алфавитные сортировки применяются при нажатии кнопки.
Алфавитный сорт - хороший пример сортировки по 2 атрибутам. В этом случае первичная сортировка выполняется на «firstname», вторичная сортировка выполняется по «lastname».
Числовая сортировка довольно гибкая, если вы указываете логическое значение true для числового параметра поля сортировки, сортировка будет передавать атрибут в число и сортировать по числу. Если вы указываете логическое значение false, используется встроенная функция сравнения строк. Перед каждым сравнением каждый элемент данных передается в функцию String(). При значении по умолчанию, равном null, первый элемент данных проверяется на наличие числа или строки, и сортировка продолжается на основе этой интроспекции.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" minWidth="955" minHeight="600">
<mx:Button label="Sort by first then last name" click="sortItemsByName()"/>
<mx:Button label="Sort by number" click="sortItemsByNumber()"/>
<mx:DataGrid dataProvider="{items}"
width="300"
height="300">
<mx:columns>
<mx:DataGridColumn dataField="number"/>
<mx:DataGridColumn dataField="firstname"/>
<mx:DataGridColumn dataField="lastname"/>
</mx:columns>
</mx:DataGrid>
<mx:ArrayCollection id="items">
<mx:Object number="3" firstname="John" lastname="Brown"/>
<mx:Object number="1" firstname="Kate" lastname="Brown"/>
<mx:Object number="4" firstname="Jeremy" lastname="Ryan"/>
<mx:Object number="5" firstname="Joe" lastname="Wilson"/>
<mx:Object number="2" firstname="Greg" lastname="Walling"/>
</mx:ArrayCollection>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.collections.Sort;
import mx.collections.SortField;
/**
* Sort the arraycollection by the firstname and then the last name
* */
private function sortItemsByName():void{
var srt:Sort = new Sort();
srt.fields = [new SortField("firstname"), new SortField("lastname")];
items.sort = srt;
items.refresh();
}
/**
* Sort the arraycollection numerically
* */
private function sortItemsByNumber():void{
var srt:Sort = new Sort();
srt.fields = [new SortField("number", true, false, true)];
items.sort = srt;
items.refresh();
}
]]>
</mx:Script>
</mx:Application>
Также здесь ссылка язык для sortField ...
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/collections/SortField.html
... и Adobe LiveDocs ссылки для поставщиков данных и коллекций ...
http://livedocs.adobe.com/flex/3/html/help.html?content=about_dataproviders_2.html
... и вот хорошая справочная информация для сортировки и фильтрации ...
http://livedocs.adobe.com/flex/3/html/help.html?content=about_dataproviders_4.html