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.
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");