2009-07-08 9 views
0

Quelqu'un peut-il me faire savoir whther nous pouvons trier ce type de données dans FLEXDataGridColumn tri dans ActionScript3

DATA -

1ER TRIMESTRE 2007 2EME TRIMESTRE 2006 2EME TRIMESTRE 2007 2EME TRIMESTRE 2006 Quand je sorte que je besoin de quelque chose comme ça ..

1ER TRIMESTRE 2006 2EME TRIMESTRE 2006 1ER TRIMESTRE 2007 2EME TRIMESTRE 2007

Cela fait partie de DataGridColumn tri lorsque je demande par défaut de tri iam obtenir comme

1er trimestre 2006 1er trimestre 2007 2ème trimestre 2006 2ème trimestre 2007

un corps peut me faire savoir si vous avez la logique ou Vous avez fait quelque chose comme ça plus tôt.

Merci, Kumar

Répondre

0

Vous voulez utiliser une fonction de tri personnalisé, à savoir:

<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; 
    } 
} 

Je vous suggère que la rupture des 4 derniers caractères des chaînes de quart de comparer les années, et si elles sont identiques, comparez les premiers caractères de chaque chaîne.

+0

Salut, Ai-je besoin de prendre Numericals dans un objet et les chaînes dans un objec de comparer –

+0

Désolé si je n'étais pas claire: obj1 et obj2 sera les objets de données qui remplissent la grille. Vous aurez besoin d'en tirer les ficelles. Voir: http://livedocs.adobe.com/flex/3/langref/mx/controls/dataGridClasses/DataGridColumn.html#sortCompareFunction. Vous devrez alors trouver un moyen de comparer les données dans chacun de ces objets - peut-être qu'une variable cachée de l'année et du quart dans l'objet de données faciliterait cela. – quoo

2

Sont-ils des chaînes ...? Vous pouvez définir votre propre fonction de tri comme celui-ci: 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

Salut Essayé d'ajouter la logique ci-dessus, mais la 1ère et 2ème choses ne sont pas triées –

+0

HI, SON TRAVAIL COOL, C'ÉTAIT MON ERREUR QUE J'AI ÉCRIT LOGIQUE MAUVAISE. MERCI POUR L'AIDE –

Questions connexes