You can sort Date objects by sorting on their numerical getTime() value, i.e.
<mx:Script>
private function sortColumn(evt:Object):Void {
if (evt.target.sortDirection == "DESC") {
var arrayFlags:Number = Array.DESCENDING;
} else {
var arrayFlags:Number = Array.ASCENDING;
}
evt.target.sortItems(sortByDate, arrayFlags);
}
public function sortByDate(itemA:Object, itemB:Object, flags:Number):Number {
var a:Date = itemA.date;
var b:Date = itemB.date;
if (flags == Array.ASCENDING) {
if (a.getTime() < b.getTime()) return -1;
if (a.getTime() == b.getTime()) return 0;
if (a.getTime() > b.getTime()) return 1;
} else {
if (a.getTime() < b.getTime()) return 1;
if (a.getTime() == b.getTime()) return 0;
if (a.getTime() > b.getTime()) return -1;
}
}
</mx:Script>
<mx:DataGrid
id="dateGrid"
dataProvider="{data}"
headerRelease="sortColumn(event)"
>
<mx:columns>
<mx:Array>
<mx:DataGridColumn sortable="true" columnName="date" headerText="Date" />
</mx:Array>
</mx:columns>
</mx:DataGrid>
Dirk.
> -----Original Message-----
> From: [email protected] [mailto:[EMAIL PROTECTED]
> Behalf Of Sean McKibben
> Sent: Tuesday, June 14, 2005 9:35 PM
> To: [email protected]
> Subject: [flexcoders] Design flaw in DataGrid sorting
>
>
> I have to call the data grid's sorting mechanism flawed.
>
> Let's examine a case where you want to sort a dataGrid by a date
> column. In all likelihood, you're going to have a labelFunction to
> format your date objects into a string. Depending on your locale,
> that string is probably not what you want to sort on (i.e. 02/04/05
> comes before 02/03/06 on the calendar, but not as a string),
> so you'd
> like to write a sortCompare function for that column.
>
> Unfortunately, the sortCompare function only receives the string
> value from the labelFunction, so you'd either have to do some very
> slow string parsing, or sort based on the results from the
> labelFunction alone. You don't get a chance to compare any more
> information about a row than the string returned by a labelFunction,
> and the labelFunction can only return a string.
>
> Not a good way to do it, Macromedia!
>
> So, what is the best workaround? Let it sort once, then resort using
> the headerRelease event and operating on the DataProvider? (assuming
> headerRelease fires after sorting is done - contrary to the
> documentation, but in line with Ailstair McLeod's tests)
>
>
> Sean
>
>
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
>
>
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/flexcoders/
<*> To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/