datatables复选框以切换WHERE子句

时间:2011-10-10 23:09:59

标签: jquery sql coldfusion datatables

好的,所以我目前正在使用coldfusion填充我的数据表,一切都很完美。我的SQL中的一个列是状态。目前我正在返回所有结果WHERE status!='Completed'

现在这个工作正常,但我真正想做的是在数据表正上方的页面上放置一个复选框,当检查时它会显示所有记录,包括已完成的记录。

问题是,我可以在复选框上进行某种回调以动态省略where子句,还是将所有记录传递给数据表并在那里过滤?我唯一担心的是,当数据库变大时,返回所有记录可能需要一段时间,90%的时间会被过滤掉。

无论哪种方式,代码片段都会非常有用!

由于

2 个答案:

答案 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)

我认为这种方法取决于您预期的数据量。如果复选框仅过滤或包含少量记录,请将它们包含在数据返回中并在客户端过滤它们。如果该复选框对结果集产生很大影响,则在更改复选框时重新触发数据调用,并且在服务器上进行过滤可能是更好的方法。