簡體   English   中英

datatables復選框可切換WHERE子句

[英]datatables checkbox to toggle WHERE clause

好的,所以我當前正在用Coldfusion很好地填充我的數據表,並且所有排序都完美無缺。 SQL中的列之一是狀態。 目前,我正在返回所有結果,其中WHERE狀態!='已完成'

到目前為止,此方法工作良好,但我真正想做的是在數據表上方的頁面上放置一個復選框,當選中該復選框時,它將顯示所有記錄,包括已完成的記錄。

問題是,我可以對復選框執行某種回調以動態忽略where子句,還是將所有記錄傳遞到數據表並在那里進行過濾? 我唯一擔心的是,當數據庫變大時,返回所有記錄可能要花一些時間,並且90%的時間將它們過濾掉。

無論哪種方式,代碼段都將非常有幫助!

謝謝


解決

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>

我想說的是,這種方法取決於您期望的數據量。 如果該復選框僅過濾或包含少量記錄,則將其包括在數據返回中,並在客戶端過濾。 如果該復選框將對結果集產生很大影響,則在更改復選框並在服務器上進行過濾時重新觸發數據調用可能是一種更好的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM