searching column for bool
searching column for bool
hi allen. I am working on upgrading one of my apps to DT1.10. I am having a problem searching for boolean values in a column.
in 1.9.4 when i created my datatable, i assigned it to a variable called rTable and called rTable.fnFilter("false", 1); to find all rows where column 1 was false. In 1.10 i am calling rTable.column(1).search('false').draw();
column.search.draw works fine in 1.10 for strings - it just doesn't seem to work for bools - i have tried toggling case sensitivity, passing the value (false) vs the string ("false") and no luck. how should i be filtering this in 1.10?
Answers
Hi,
Is your data actually the string
false
or is it aboolean
false
? If its a boolean, then you might have come across a bug in DataTables 1.10 here...Thanks,
Allan
it's an actual boolean type, not a string. I haven't tried the new data tags to facilitate searching - i was going to test that out tomorrow.
I'll take a look into this when I get into the office tomorrow morning. I feel that this is likely a type issue here. Looking at the DataTables search API there is this. That 'cast' to string was don't to match the 1.9 behaviour, but it is possible there is something in the core filtering that has changed.
I'll post back when I have a bit more information.
Regards,
Allan
Hi,
So this is certainly due to a change in DataTables core and how it handles "empty" data for filtering. It is transforming your
false
to an empty string, which is wrong. The fix for that is fairly trivial, but I think this has knock on implications that I'd like to consider. I'll sleep on it tonight and look at it again with fresh eyes tomorrow!Allan
hi allan. somehow my dataTables_scrollBody div (that contains the body of the DT) is resizing when i increase the width of the browser window, but the dataTables_scrollHead and dataTables_scrollFoot are not resizing.
each column in my grid has a fixed width specified (in em). I do not want the scrollBody div to resize, i want it to remain fixed in width.
I have scrollX set to true, and autoWidth set to false- in 1.9.4 i would get the behavior i'm looking for, but it seems to be behaving differently in 1.10 - any ideas?
aha! i was able to back into it from another example, i just needed to set a width in pixels of the div containing the datatable, and it no longer resizes the body of the table - no need to look into this further.
That sounds interesting. Are you able to link me to a page showing that problem so I can investigate?
Regarding the searching for a boolean issue - sorry for the delay on it! I'm going to look at it today!
Allan
i just noticed that table tools .fnGetSelectedData has some unexepected behaviors.
if i select a row, then update the data for that row, and then call fnGetSelectedData - fnGetSelectedData returns the original object (not the most recent one reflecting the update)
disregard - i had messed up my event handler, all is well.
Hi,
Is the search problem solved?
I have the same issue when I search on a boolean "false" or 0. The column().search() treats it as an empty string. Like you said, allan.
Not yet - it is coming though! It is top priority now that I'm managed to work through a few other issues.
Allan
That sounds great. It is an excellent job with the new version :)
Apologies for the delay in looking into this, but I'm happy with the solution now after trying a few options. The change has been committed and the nightly is now up to date.
If you could give it a try out and see what you think, and let me know if you hit any issues (or even if you don't!) that would be great.
Regards,
Allan
Okay, I have now tried it out. It still does not work for me.
I have tried following:
Filter with .search( false ):
Result: filter everything out.
Filter with .search( true ):
Result: filter everything out.
Filter with .search( 0 ):
Result: filter nothing.
Filter with .search( 1 ):
Result: Gets the correct ones with status 1.
Am I doing something wrong? I could use a little help here.
For extra information:
I use query serach/server side. The status column in my mySQL is a tinyint(1)