Il tuo codice è a posto, anche se qui ci sono un paio di esempi in cui un tipo numerico e un ordine alfabetico vengono applicati ai clic del pulsante.
L'ordinamento alfabetico è un buon esempio di ordinamento su 2 attributi. In questo caso, l'ordinamento primario viene eseguito sul 'firstname', l'ordinamento secondario viene eseguito sul 'lastname'.
L'ordinamento numerico è piuttosto flessibile, se si fornisce un valore booleano di true per il parametro numerico del campo di ordinamento, l'ordinamento getterà l'attributo su un numero e ordinerà per numero. Se fornisci un valore booleano di false, viene utilizzata la funzione di confronto stringa incorporata. Ciascun elemento di dati viene eseguito il cast su una funzione String() prima del confronto. Con il valore predefinito di null, il primo elemento di dati viene introspettato per vedere se si tratta di un numero o una stringa e il tipo procede basato su tale introspezione.
<?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>
qui è anche il riferimento lingua per il SortField ...
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/collections/SortField.html
... e Adobe LiveDocs di riferimento per i fornitori di dati e le collezioni ...
http://livedocs.adobe.com/flex/3/html/help.html?content=about_dataproviders_2.html
... e questo è un buon riferimento a livedocs per l'ordinamento e il filtraggio ...
http://livedocs.adobe.com/flex/3/html/help.html?content=about_dataproviders_4.html