سؤال

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

enter image description here

هل كانت مفيدة؟

المحلول

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
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top