gewusst wie: Sortieren einer flex datagrid nach mehreren Spalten?
Ich habe ein datagrid, gefüllt, wie unten gezeigt. Klickt der Benutzer auf die Kopfzeile einer Spalte, würde ich gerne die Zeilen zu Sortieren mit Hilfe einer lexikographischen Sortierung, in denen die ausgewählte Spalte wird zuerst verwendet, dann werden die verbleibenden Spalten in Links-nach-rechts, um zu brechen alle Beziehungen. Wie kann ich den code dazu?
(Ich habe eine Antwort, die werde ich nach unten, aber es hat ein problem -- ich werde begeistert sein, wenn jemand eine bessere!)
Hier ist das layout:
<?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>
Und hier der backing-code:
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;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist die beste Antwort die ich bisher gefunden habe, ist das erfassen der headerRelease-Ereignis aus, wenn der Benutzer klickt auf:
Den event-handler kann dann eine Sortierreihenfolge für die Daten:
Allerdings hat dieser Ansatz ein bekanntes problem, dass die Spaltenüberschriften nicht mehr zu zeigen kleine Pfeile zeigen die Sortierrichtung an. Dies ist ein Nebeneffekt der Berufung
evt.preventDefault()
allerdings muss man machen, dass Anruf oder sonst Ihre benutzerdefinierte Sortierung nicht angewendet werden.