I've got a query from a db that is returned as a ArrayCollection of Objects. I want to alphabetically sort by one property of the object. Coming back from the db.queryResults() the name of the property of the object is DmvValue3. How to I sort this. Below is my code and a screenshot of the Property from the ArrayCollection.
private function sortCollection(list:ArrayCollection):ArrayCollection
{
var sort:ISort = new Sort();
var sortField:SortField = new SortField(null, true);
sortField.setStyle("locale", "en-US");
sort.fields = [sortField];
list.sort = sort;
list.refresh();
return list;
}
This is untested code, but it should get you on the correct path.
private function sortCollection(list:ArrayCollection):ArrayCollection {
var sort:ISort = new Sort();
var sortField:SortField = new SortField();
sortField.name = "DmvValue3";
sortField.caseInsensitive = true;
sortField.numeric = true;
sortField.descending = true;
sort.fields = [sortField];
list.sort = sort;
list.refresh();
return list;
}
[UPDATE]
private function sortCollection(list:ArrayCollection):ArrayCollection {
var sort:ISort = new Sort();
var sortField:SortField = new SortField();
//sortField.name = "DmvValue3";
//sortField.caseInsensitive = true;
////sortField.numeric = true;
//sortField.descending = true;
//sort.fields = [sortField];
sort.compareFunction = myCompare;
list.sort = sort;
list.refresh();
return list;
}
public function myCompare(a:Object, b:Object, fields:Array = null):int {
if(a["DmvValue3"] < b["DmvValue3"] )
return -1; // -1, if a should appear before b in the sorted sequence
if(a["DmvValue3"] == b["DmvValue3"] )
return 0; // 0, if a equals b
if(a["DmvValue3"] > b["DmvValue3"] )
return 1; // 1, if a should appear after b in the sorted sequence
}