2009-07-08 10 views
0

Kann jemand lassen Sie mich wissen whther wir diese Art von Daten in FLEX sortierenDatagrid in ActionScript3

DATA -

1. Quartal 2007 2. Quartal 2006 2. QUARTAL 2007 2. Quartal 2006 Wenn i Art brauche ich so etwas wie dieses ..

1. Quartal 2006 2. Quartal 2006 1. Quartal 2007 2. QUARTAL 2007

Dies ist Teil der Datagrid Sorting wenn i Standardsortier iam wie anwenden bekommen

1. Quartal 2006 1. Quartal 2007 2. Quartal 2006 2. Quartal 2007

Kann mir einige Körper wissen lassen, ob Sie Logik oder Du hast so etwas früher gemacht.

Danke, Kumar

Antwort

0

Sie erhalten eine benutzerdefinierte Sortierfunktion verwendet werden soll, das heißt:

<mx:DataGridColumn dataField="quarter" headerText="Quarter" width="100" 
sortCompareFunction="sortQuarter"/> 

public function sortQuarter(obj1:Object, obj2:Object):int{ 
    //where obj1 and obj2 are your data objects containing the quarter strings, you'll need to parse them to compare to see which one is greater. 
    if(obj1 < obj2){ 
     return -1; 
    } 

    if(obj1 == obj2){ 
     return 0; 
    } 


    if(obj1 > obj2){ 
     return 1; 
    } 
} 

Ich würde vorschlagen, die letzten vier Zeichen der Viertel Saiten abbrach nur die vergleichen Jahre, und dann, wenn sie gleich sind, vergleichen Sie die ersten Zeichen jeder Zeichenfolge.

+0

Hallo, Muß ich nehme Numericals in einem Objekt und Streicher in einer objec –

+0

Leider zu vergleichen, wenn ich nicht klar bin: Sie können Ihre eigene Sortierfunktion wie folgt definieren obj1 und obj2 wird die Datenobjekte, die das Raster füllen. Sie müssen die Fäden aus ihnen ziehen. Siehe: http://livedocs.adobe.com/flex/3/langref/mx/controls/dataGridClasses/DataGridColumn.html#sortCompareFunction. Sie müssen dann einen Weg finden, um die Daten in jedem dieser Objekte zu vergleichen - vielleicht würde eine versteckte Jahr- und Viertelvariable im Datenobjekt dies einfacher machen. – quoo

2

Sind sie Saiten ...? sortCompareFunction

dataGridColumn.sortCompareFunction = compareQuarters; 

private function compareQuarters(lhs:Object, rhs:Object):int 
{ 
    var lhsArray:Array = lhs.split(" "); 
    var rhsArray:Array = rhs.split(" "); 
    if(lhsArray[2] > rhsArray[2]) 
    { 
     return -1; 
    } 
    if(lhsArray[2] < rhsArray[2]) 
    { 
     return 1; 
    } 
    if(lhsArray[0] > rhsArray[0]) 
    { 
     return -1; 
    } 
    if(lhsArray[0] < rhsArray[0]) 
    { 
     return 1; 
    } 
    return 0; 
} 
+0

Hi Versucht, die obige Logik hinzuzufügen, aber die ersten und zweiten Dinge werden nicht sortiert –

+0

HI, SEINE ARBEITSKÜHLEN, ES WAR MEINEN FEHLER, DASS ICH FALSCHE LOGIK .THANKS FÜR DIE HILFE GESCHRIEBEN HABE –