vendredi 21 mars 2008

Trier une colonne d'une datagrid

Flex permet de redéfinir le tri des données sur une datagrid.
Voici un exemple très simple d'une DataGrid donnant les informations de la météo:

Exemple

Si on clique sur le titre "Temps" de la colonne Flex va ordonner les données à sa façon. Mais ce n'est pas ce que l'on souhaite, on voudrait l'ordre suivant Pluie > Variable > Soleil.

On va donc utiliser la propriété sortCompareFunction qui prend comme valeur une fonction dont la signature est la suivante compareTo(obj1:Object, obj2:Object):int.
A partir de cette fonction la datagrid va réaliser le tri adequat.
private function compareTo(obj1:Object, obj2:Object):int
{
if(obj1.temps == obj2.temps)
{
return 0; // en cas d'egalité on retourne 0
}
else
{
if(obj1.temps == "Soleil")
{
return -1; // Soleil < obj2
}
else
{
if(obj1.temps == "Pluie")
{
return 1; // Pluie > obj1
}
else
{
if(obj2.temps == "Soleil")
{
return 1; // Variable > Soleil
}
else
{
return -1; // Variable < Pluie
}
}
}
}
}

Aucun commentaire: