好的,所以我目前正在使用coldfusion填充我的数据表,一切都很完美。我的SQL中的一个列是状态。目前我正在返回所有结果WHERE status!='Completed'
现在这个工作正常,但我真正想做的是在数据表正上方的页面上放置一个复选框,当检查时它会显示所有记录,包括已完成的记录。
问题是,我可以在复选框上进行某种回调以动态省略where子句,还是将所有记录传递给数据表并在那里过滤?我唯一担心的是,当数据库变大时,返回所有记录可能需要一段时间,90%的时间会被过滤掉。
无论哪种方式,代码片段都会非常有用!
由于
答案 0 :(得分:1)
iKnowKungFoo是对的。由于我在datatables
中使用分页,因此查询仅限于那些行,从而消除了对大返回结果的担忧。
我实现了以下代码来放置jqueryui
切换按钮。
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>
答案 1 :(得分:0)
我认为这种方法取决于您预期的数据量。如果复选框仅过滤或包含少量记录,请将它们包含在数据返回中并在客户端过滤它们。如果该复选框对结果集产生很大影响,则在更改复选框时重新触发数据调用,并且在服务器上进行过滤可能是更好的方法。