En el siguiente tip mostraré como ordenar un ArrayCollection en Flex. Esto nos puede ser necesario a la hora de mostrar su contenido. Para mostrar esto utilizaré como ejemplo los resultados (hasta este momento) de las votaciones de los premios Cristalab 2008.
Supongamos que tenemos este ArrayCollection:
Código :
public var premioPopular:ArrayCollection = new ArrayCollection([
{claber: "Eldervaz", votos: 6},
{claber: "Freddie", votos: 13},
{claber: "XKlibur", votos: 3},
{claber: "TheParrot", votos: 7},
{claber: "M@U", votos: 1},
{claber: "Mariux", votos: 4},
{claber: "JaLeRu", votos: 1},
{claber: "Pley", votos: 1},
]);Código :
<mx:VBox width="25%" horizontalCenter="0" verticalCenter="0">
<mx:Label text="Claber más Popular" fontWeight="bold" fontSize="18"/>
<mx:HBox width="100%" height="100%">
<mx:Legend id="legend1" dataProvider="{pie1}"/>
<mx:PieChart id="pie1" dataProvider="{premioPopular}" showDataTips="true" width="150" height="150">
<mx:series>
<mx:PieSeries field="votos" nameField="claber"/>
</mx:series>
</mx:PieChart>
</mx:HBox>
</mx:VBox>Código :
var sortField:SortField = new SortField(); sortField.name = "votos"; sortField.numeric = true;
Código :
var sort:Sort = new Sort(); sort.fields = [sortField]; sort.reverse();
Código :
premioPopular.sort = sort; premioPopular.refresh();
Código :
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="sortArray()">
Código :
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="sortArray()">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.collections.SortField;
import mx.collections.Sort;
//----------------------------------------------------------------
[Bindable]
public var premioPopular:ArrayCollection = new ArrayCollection([
{claber: "Eldervaz", votos: 6},
{claber: "Freddie", votos: 13},
{claber: "XKlibur", votos: 3},
{claber: "TheParrot", votos: 7},
{claber: "M@U", votos: 1},
{claber: "Mariux", votos: 4},
{claber: "JaLeRu", votos: 1},
{claber: "Pley", votos: 1},
]);
//----------------------------------------------------------------
public function sortArray():void
{
var sortField:SortField = new SortField();
sortField.name = "votos";
sortField.numeric = true;
var sort:Sort = new Sort();
sort.fields = [sortField];
sort.reverse();
premioPopular.sort = sort;
premioPopular.refresh();
}
]]>
</mx:Script>
<mx:VBox width="25%" horizontalCenter="0" verticalCenter="0">
<mx:Label text="Claber más Popular" fontWeight="bold" fontSize="18"/>
<mx:HBox width="100%" height="100%">
<mx:Legend id="legend1" dataProvider="{pie1}"/>
<mx:PieChart id="pie1" dataProvider="{premioPopular}" showDataTips="true" width="150" height="150">
<mx:series>
<mx:PieSeries field="votos" nameField="claber"/>
</mx:series>
</mx:PieChart>
</mx:HBox>
</mx:VBox>
</mx:Application>