The good news is I believe that the folks at Adobe are convinced this 
is a bug.

The bad news is I was told that they aren't going to fix it anytime 
soon, what with the new release coming out and the fact that there is 
an "easy" workaround and all.

<opinion>
It is my opinion, after looking at the code that generates the error, 
it would be a relatively simple fix. I believe that all that would be 
needed is in the routine that determines the data type to sort on it 
should ignore nulls. As it loops through the column to find the data 
type should it find no non-null elements, it doesn't need to sort 
anything.

The only performance impact would be on columns that contain lots of 
nulls, but I would rather have my users wait a few milliseconds 
rather than get an error, or have my developers waste time adding 
sort handlers for each column in each datagrid. Also I am sure that 
the sort handlers have a substantial performance impact at runtime.

What I am trying to say is I believe that Adobe has made a mistake in 
offloading a significant amount of work onto developers, and has a 
poorer product, when with a small effort they can solve the problem.
</opinion>

Paul

--- In flexcoders@yahoogroups.com, "aceoohay" <[EMAIL PROTECTED]> wrote:
>
> I agree that you cannot tell what type of data a null is. 
> 
> The sort routine(s) has no problem sorting nulls when the non-null 
> data is string. It also works for completely null columns. 
> 
> I think a reasonable solution would be a new column 
> attribute, "sortDataType" (values: ascii, number, date) for 
datagrid 
> columns. If you wanted to go crazy, add another 
> attribute, "nullCollateOrder" (values: low, high). Modifying the 
> existing sort routines to handle nulls should be fairly trivial. 
This 
> may improve performance for columns where these attributes are 
> specified since the routine doesn't need to read data to determine 
> the type of sort to perform.
> 
> A different approach might be an attribute nvl(value), where any 
> nulls would be converted to the value specified. Examples might be 
nvl
> (0), nvl(99999), nvl(01/01/0001), or nvl(12/31/5600)
> 
> I realize I must deal with the here and now, so how would you write 
a 
> generic function to hande this? 
> 
> It is my understanding that the sortCompareFunction wants a 
function 
> like mySort(obj1:Object,obj2:Object). obj1 and obj2 are two 
objects  
> that represent two rows, and to access the column to compare you 
need 
> to know the property such as obj1.myDate, or obj[4]. In order to 
> write a generic routine I need to know know what column has been 
> clicked.
> 
> Paul
> 
> --- In flexcoders@yahoogroups.com, "Alex Harui" <aharui@> wrote:
> >
> > because null can be assigned to anything is does not have 
a "type" 
> so we
> > can't tell by examining the data if you want to sort by date, 
> number,
> > etc.
> >  
> > Where do you want nulls to appear in a sort?  Could go anywhere 
> right?
> > That's why you'll have to write your own compare function with 
the 
> null
> > handling rules you want.
> >  
> > I haven't tried writing a generic compare function, but I don't 
see 
> why
> > it wouldn't be possible.
> > 
> > ________________________________
> > 
> > From: flexcoders@yahoogroups.com 
> [mailto:[EMAIL PROTECTED] On
> > Behalf Of aceoohay
> > Sent: Friday, November 30, 2007 1:15 PM
> > To: flexcoders@yahoogroups.com
> > Subject: [flexcoders] Re: Sorting problem on date and numbers 
with 
> null
> > values, I think
> > 
> > 
> > 
> > The data is fully populated at the time the column header is 
> > clicked. However some of the cells are null.
> > 
> > We certainly disagree on this:-) 
> > 
> > Since a null is a valid result for all data types, it seems to me 
> > that any sort algorithm should handle the universe of valid data 
> > elements for that type. 
> > 
> > Additionally there appears to be no way to write a generic 
> > sortCompareFunction handler that will handle any column from any 
> > datagrid. If this is true then the developer needs to decide what 
> > type of data is being stored in each column, can nulls ever exist 
> in 
> > this column and then write a custom sort routine for that column.
> > 
> > If in fact Flex cannot sort columns with nulls, and every column 
> > that could contain a null requires the developer to write a 
> separate 
> > custom sort handler, I think that "serious shortcoming" is a 
polite 
> > way of stating the issue.
> > 
> > Is there a way of working around this "feature?"
> > 
> > Paul
> > --- In flexcoders@yahoogroups.com <mailto:flexcoders%
> 40yahoogroups.com>
> > , "Alex Harui" <aharui@> wrote:
> > >
> > > Well, I don't see it as a shortcoming that we default to 
> efficient 
> > sort
> > > algorithms that assume that all values are of the same type. 
> > Seems like
> > > all you need is a comparefunction for dates and one for numbers 
> and
> > > assign the correct function to the appropriate column. Also 
note 
> > that
> > > if you sort with nulls for data that hasn't arrived yet, you'll 
> > probably
> > > have to re-sort as the data arrives. The collections generally 
> > wait
> > > until all data has arrived to do the sort so it doesn't have to 
> > keep
> > > resorting as data has arrived.
> > > 
> > > So, you could wait for all data to arrive as well, or maybe 
> monkey-
> > patch
> > > the sort code to handle null. You can file an enhancement 
> > request, but
> > > I don't see it getting done in 3.0
> > > 
> > > ________________________________
> > > 
> > > From: flexcoders@yahoogroups.com <mailto:flexcoders%
> 40yahoogroups.com>
> > 
> > [mailto:flexcoders@yahoogroups.com <mailto:flexcoders%
> 40yahoogroups.com>
> > ] On
> > > Behalf Of aceoohay
> > > Sent: Friday, November 30, 2007 9:13 AM
> > > To: flexcoders@yahoogroups.com <mailto:flexcoders%
> 40yahoogroups.com> 
> > > Subject: [flexcoders] Re: Sorting problem on date and numbers 
> with 
> > null
> > > values, I think
> > > 
> > > 
> > > 
> > > What is the workaround?
> > > 
> > > The sortCompareFunction does not seem to be reasonable, since a 
> > > version needs to be written for each column in each grid.
> > > 
> > > This seems like a serious shortcoming...
> > > 
> > > Paul
> > > 
> > > --- In flexcoders@yahoogroups.com
> > <mailto:flexcoders%40yahoogroups.com>  <mailto:flexcoders%
> > 40yahoogroups.com>
> > > , "Alex Harui" <aharui@> wrote:
> > > >
> > > > THe default sort code can't handle null as it isn't a date or 
> > > number
> > > > 
> > > > ________________________________
> > > > 
> > > > From: flexcoders@yahoogroups.com
> > <mailto:flexcoders%40yahoogroups.com>  <mailto:flexcoders%
> > 40yahoogroups.com>
> > > 
> > > [mailto:flexcoders@yahoogroups.com
> > <mailto:flexcoders%40yahoogroups.com>  <mailto:flexcoders%
> > 40yahoogroups.com>
> > > ] On
> > > > Behalf Of aceoohay
> > > > Sent: Thursday, November 29, 2007 8:49 PM
> > > > To: flexcoders@yahoogroups.com <mailto:flexcoders%
> 40yahoogroups.com>
> > <mailto:flexcoders%
> > 40yahoogroups.com> 
> > > > Subject: [flexcoders] Re: Sorting problem on date and numbers 
> > with 
> > > null
> > > > values, I think
> > > > 
> > > > 
> > > > 
> > > > When I said no values returned from the DB, I meant that the 
> > grid 
> > > is 
> > > > populated with some records that have the values in the 
> > > number/date 
> > > > column, and others that don't.
> > > > 
> > > > Paul
> > > > --- In flexcoders@yahoogroups.com
> > <mailto:flexcoders%40yahoogroups.com> 
> > > <mailto:flexcoders%40yahoogroups.com> <mailto:flexcoders%
> > > 40yahoogroups.com>
> > > > , "aceoohay" <pauls@> wrote:
> > > > >
> > > > > I running flexbuilder 2.0.1, AS 3.
> > > > > 
> > > > > I have a number of datagrids. In two of my grids I have 
date 
> > and 
> > > > > number fields that sometimes have no values returned from 
the 
> > > DB. 
> > > > > When I click the heading on these columns to sort Ascending 
> > they 
> > > > work 
> > > > > fine. When I click a second time (descending) I get the 
> > > following 
> > > > > error;
> > > > > 
> > > > > 
> ===============================================================
> > > > > Error: Cannot determine comparator for SortField with 
> > > > > name ''MyNumberDataField''.
> > > > > at mx.collections::SortField/::nullCompare()
> > > > > at 
> > > > > 
> > > > 
> > > 
> > 
> 
mx.collections::SortField/http://www.adobe.com/2006/flex/mx/internal:
> > <http://www.adobe.com/2006/flex/mx/internal:> 
> > > <http://www.adobe.com/2006/flex/mx/internal:
> > <http://www.adobe.com/2006/flex/mx/internal:> > 
> > > :
> > > > <http://www.adobe.com/2006/flex/mx/internal::
> > <http://www.adobe.com/2006/flex/mx/internal::> 
> > > <http://www.adobe.com/2006/flex/mx/internal::
> > <http://www.adobe.com/2006/flex/mx/internal::> > > 
> > > > > internalCompare()
> > > > > at mx.collections::Sort/::internalCompare()
> > > > > at mx.collections::Sort/findItem()
> > > > > at mx.collections::ListCollectionView/getItemIndex()
> > > > > at ::ListCollectionViewCursor/::collectionEventHandler()
> > > > > at 
> > > > > 
> > > > 
> > > 
> > 
> 
flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchE
> > > v
> > > > > entFunction()
> > > > > at flash.events::EventDispatcher/dispatchEvent()
> > > > > at mx.collections::ListCollectionView/dispatchEvent()
> > > > > at mx.collections::ListCollectionView/::internalRefresh()
> > > > > at mx.collections::ListCollectionView/refresh()
> > > > > at mx.controls::DataGrid/::sortByColumn()
> > > > > at mx.controls::DataGrid/::headerReleaseHandler()
> > > > > at 
> > > > > 
> > > > 
> > > 
> > 
> 
flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchE
> > > v
> > > > > entFunction()
> > > > > at flash.events::EventDispatcher/dispatchEvent()
> > > > > at mx.core::UIComponent/dispatchEvent()
> > > > > at 
mx.controls::DataGrid/mx.controls:DataGrid::mouseUpHandler
> > > > > ()
> > > > > 
> ===============================================================
> > > > > 
> > > > > I am not using a sort compare function anywhere. I have 
other 
> > > text 
> > > > > type fields with nulls that seem to sort correctly.
> > > > > 
> > > > > This seems like a bug. 
> > > > > 
> > > > > Any ideas?
> > > > > 
> > > > > Paul
> > > > >
> > > >
> > >
> >
>


Reply via email to