2009-10-21 4 views
10

Czy jest jakiś sposób w Flex, gdzie możemy sortować arraycollection na podstawie ciągów znaków.Sortowanie kolekcji ArrayCollection w Flex

Mam dataprovider z ciągami takimi jak "Krytyczny" "Wysoki" "Średni" "Niski" gdzie muszę go posortować w taki sposób, że potrzebuję Krytycznego wyświetlania na górze i na górze Wysoki, Średni i Low następuje.

Czy ktoś może mi powiedzieć jakąkolwiek logikę.

Dzięki Kumar

Odpowiedz

23

ArrayCollection jest podklasą ListCollectionView że ma sortproperty. Klasa Sort ma compareFunctionproperty, której można użyć do definiowania niestandardowych funkcji sortowania.

private function sortFunction(a:Object, b:Object, array:Array = null):int 
{ 
    //assuming that 'level' is the name of the variable in each object 
    //that holds values like "Critical", "High" etc 
    var levels:Array = ["Low", "Medium", "High", "Critical"]; 
    var aLevel:Number = levels.indexOf(a.level); 
    var bLevel:Number = levels.indexOf(b.level); 
    if(aLevel == -1 || bLevel == -1) 
     throw new Error("Invalid value for criticality "); 
    if(aLevel == bLevel) 
     return 0; 
    if(aLevel > bLevel) 
     return 1; 
    return -1; 
} 
var sort:Sort = new Sort(); 
sort.compareFunction = sortFunction; 
arrayCollection.sort = sort; 
arrayCollection.refresh(); 
+0

Działa dobre amar dzięki – skumarvarma

+1

funkcja powinna zwracać int – zinovii

+0

@zdmytriv ustalone; dzięki :) – Amarghosh