types detection on columns with nulls
types detection on columns with nulls
I was having trouble with getting type detection to work on columns that have nulls in them. Would I be correct in assuming that the first row values are what are being passed to the regex functions? It seems to see a null and classify the column as a string as opposed to the date type that I set up. If so would there be a good way of grabbing the first row with an actual value to evaluate?
Trying to avoid using column type definitions, but may need to resort to that.
[code]
jQuery.fn.dataTableExt.aTypes.push(
function ( sData )
{
if (sData.match(/^(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])\-(19|20|21)\d\d$/))
{
return 'us_date';
}
return null;
}
);
[/code]
Trying to avoid using column type definitions, but may need to resort to that.
[code]
jQuery.fn.dataTableExt.aTypes.push(
function ( sData )
{
if (sData.match(/^(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])\-(19|20|21)\d\d$/))
{
return 'us_date';
}
return null;
}
);
[/code]
This discussion has been closed.
Replies
DataTables doesn't really "like" null data, for the simple fact that null isn't any data at all :-). What is null when you show it in a table? An empty cell possibly, in which case it should be an empty String, or the cell shouldn't exist at all, which would probably break the table altogether.
I don't really think this is a bug in DataTables as such, since, as I say, null is not data, and shouldn't really be in a table. I presume that you are using Ajax data or some other form of dynamic injection? One option might be to replace null with an empty string internally in DataTables when the data is added, but then it's no longer null and I've modified your data, which I'm most reluctant to do... So currently (I'm open to persuasion though!) I think that this should be done externally.
Regards,
Allan
In my case, I am trying to define date columns that may or may not have a value depending on whether the event has occurred or not.
Anyway, regardless of whether you look into this or not, awesome stuff. It's a great tool for the kind of reports I am generating. Thanks.
Ah okay - I see what the issue is then. The reason DataTables isn't automatically detecting the non-breaking space as a date is because it isn't :-). Therefore, that character overrules the other information in the column and forces the column to be of type 'string'. So there are a couple of ways around this:
1. Replace (or put in front of in the array, is probably easier) the current date detection function which is built into DataTables using a plug-in, basically as you have above (using the Array.unshift method).
2. Have a 'neutral' date in the cell (probably not an attractive option)
3. Set sType for the column manually, as you have done now.
The first option seems like the most attractive to me to maintain automatic detection :-)
Regards,
Allan