Question

I am trying to sort a list of string stored in an arraycollection. But the sorted result is not correct. Please see my code.

spark.collections.Sort

if(value is ArrayCollection){
            var sort:Sort=new Sort();
            var sortField:SortField = new SortField("data")
            sortField.numeric=false;
            sort.fields=[sortField];

            ArrayCollection(value).sort=sort;
            ArrayCollection(value).refresh();
        }

Input: Start With, Contains, End With, Equals IgnoreCase, Not Equals, Matching, Equals

Output: Equals IgnoreCase, Contains, End With, Start With, Not Equals, Matching, Equals

Some time only one row is swapping with another(as above), some time no sorting at all.

Was it helpful?

Solution

In case of your array collection having list of string. you need not specify name of SortField your case data.

            var value:ArrayCollection = new ArrayCollection(['Start With','Contains','End With','Equals IgnoreCase','Not Equals','Equals']);
            var dataSortField:SortField = new SortField(); //Leave it empty.
            dataSortField.numeric = false;

            var dataSort:Sort = new Sort();
            dataSort.fields=[dataSortField];

            value.sort = dataSort;
            value.refresh();

o/p:

   "value"  mx.collections.ArrayCollection (@31ced61)   
[0] "Contains"  
[1] "End With"  
[2] "Equals"    
[3] "Equals IgnoreCase" 
[4] "Not Equals"    
[5] "Start With"

If arraycollection having object with data property your code is absolutly correct. like

            var value:ArrayCollection = new ArrayCollection();
            value.addItem({data:'Start With'});
            value.addItem({data:'Contains'});
            value.addItem({data:'End With'});
            value.addItem({data:'Equals IgnoreCase'});
            value.addItem({data:'Not Equals'});
            value.addItem({data:'Equals'});

This case you need to specify like

var sortField:SortField = new SortField("data");
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top