First things first, read about the mx.collections.Sort Class before going in to the code below.
About the Post,suppose i have a AC[ArrayCollection] like below;
[Bindable]
private var arrClldetails:ArrayCollection = new ArrayCollection([
{Fname:"Kranthi", Lname:"Kata", dob:"21 Sep 79"},
{Fname:"Vasanth", Lname:"Lola", dob:"11 Jun 80"},
{Fname:"Manoj", Lname:"Pati", dob:"16 July 81"},
{Fname:"John McClain", Lname:"Mela", dob:"15 Feb 72"},
{Fname:"Ross", Lname:"Geller", dob:"02 Jan 74"},
{Fname:"Chandler", Lname:"Bing", dob:"18 Oct 76"}
]);
Now i want to Sort the “dob” Date field in the AC.,so for this i need to
write a compareFunction for Sort which in turn is applied to the AC like below,
//Compare Function
private function fnCompareFunction(ObjA:Object,ObjB:Object,fields:Array = null):int
{
//fnDtfParceFunct is a Date parse function avail in DownloadCode.
var dateA:Date=fnDtfParceFunct(ObjA.dob,”DD/MM/YY”);
var dateB:Date=fnDtfParceFunct(ObjB.dob,”DD/MM/YY”);
return ObjectUtil.dateCompare(dateA, dateB);
}
Now apply this CompareFunction to Sort and then apply that to AC like below,
var sort:Sort=new Sort();
sort.compareFunction=fnCompareFunction;
arrClldetails.sort=sort;
Now refresh the AC for Sort to take effect,
arrClldetails.refresh();
Enjoy the post.

November 23, 2009 at 3:28 pm |
The sort function doesn’t sort data properly. You should convert date stamps in your fnDtfParceFunct() to int Numbers and compare them like numeric values.
November 24, 2009 at 3:47 am |
It does work correctly,let me explain,suppose i have Date in DD MMM YY [24 Nov 09] format, so when i parse this to get my Date object, i get something like this “Tue Nov 24 00:00:00 GMT+0530 2009″, now you can observe the Timestamp its 0,well all the dates in the example have 0 timestamps,and please explore ObjectUtil.dateCompare(),it does what you have mentioned.
regards,
kumar.
November 24, 2009 at 11:09 pm |
OMG enjoyed reading this article. I submitted your feed to my reader.