comment trier un flex de grille de données selon plusieurs colonnes?

J'ai un datagrid, peuplé comme indiqué ci-dessous. Lorsque l'utilisateur clique sur un en-tête de colonne, je voudrais trier les lignes à l'aide d'un tri lexicographique dans lequel la colonne sélectionnée est utilisée en premier, puis le reste des colonnes sont utilisées dans de gauche à droite afin de rompre tous les liens. Comment puis-je code?

(J'ai une réponse, je vais poster ci-dessous, mais il a un problème, je serai ravi si quelqu'un peut fournir un meilleur!)

Voici la mise en page:

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
    layout="absolute" creationComplete="onCreationComplete()">

    <mx:Script source="GridCode.as" />

    <mx:DataGrid id="theGrid" x="61" y="55" width="466" height="317">
        <mx:columns>
            <mx:DataGridColumn dataField="A"/>
            <mx:DataGridColumn dataField="B"/>
            <mx:DataGridColumn dataField="C"/>
        </mx:columns>
    </mx:DataGrid>

</mx:Application>

Et voici le code de soutien:

import mx.collections.ArrayCollection;
import mx.collections.Sort;
import mx.collections.SortField;
import mx.controls.dataGridClasses.DataGridColumn;
import mx.events.DataGridEvent;

public function onCreationComplete():void
{
    var ar:ArrayCollection = new ArrayCollection();
    var ob:Object;
    for( var i:int=0; i<20; i++ )
    {
        ob = new Object();
        ob["A"] = i;
        ob["B"] = i%3;
        ob["C"] = i%5;
        ar.addItem(ob);
    }
    this.theGrid.dataProvider = ar;
}

OriginalL'auteur Eric | 2008-09-17