datatables checkbox to toggle WHERE clause
Ok so I am currently populating my datatable just fine with coldfusion and everything sorts perfectly. One of the columns in my SQL is the status. Currently I am returning all results WHERE status != 'Completed'
This has worked fine for now, but what I would really like to do is place a checkbox on the page just above the datatable and when checked it would show all records including those that are completed.
Question is, can I do some kind of callback on the check box to dynamically omit the where clause, or do I deliver ALL records to datatables and filter 开发者_开发技巧it there? My only worry with that is when the database gets large, returning all records may take a while and 90% of the time they will be filtered out.
Either way, code snippets would be very helpful!
Thanks
RESOLVED
iKnowKungFoo was right. Since I am using pagination in datatables
, the query is limited to those rows anyway, eliminating the worry for the large return result.
I implemented the following code to put a jqueryui
toggle button.
js
$('#completed_button').bind('change', function(){
if($(this).is(':checked')){
$(this).button('option', 'label', 'Hide Completed');
oTable.fnFilter('Completed',6,false);
} else {
$(this).button('option', 'label', 'Show Completed');
oTable.fnFilter('',6,false);
}
});
html
<input class="toggle-button" id="completed_button" type="checkbox" /><label for="completed_button">Show Completed</label>
SQL
WHERE 1 =1
<cfif trim(url.sSearch_6) NEQ "Completed">
AND TS.tickets_status_id != <cfqueryparam cfsqltype="cf_sql_integer" value="13" />
</cfif>
I'd say the approach depends on the amount of data you're anticipating. If the checkbox will only filter or include a small number of records, include them in the data return and filter them on the client side. If that checkbox will have a large impact on the result set, re-firing the data call when the checkbox is changed and filtering on the server is probably a better approach.
精彩评论