2016-10-07 21 views
0

列のダイナミクスのsearchableプロパティを設定する必要があります(テーブルの初期化後)。解決策はありますか?使用例は、ボタンの拡張機能を使用して列の可視性を切り替えることです。しかし、私は視覚的な列だけが検索されるのではない。DataTables - 動的に設定された列を検索可能

+0

リンクを参照できます。https://datatables.net/reference/option/columns.searchable –

答えて

0

"フィルタボタン"をテーブルに追加したかったのです。彼らは、除外された&隠された&検索できない列だけを検索(フィルタリング)する必要があります。

  • 私はグローバル検索から除外したかったので、ユーザはそれ
  • ない、検索を見ることができないはずですので、隠れた&を除外。

複数のサポートフォーラムでは、dt。著者はこの機能を実装することを約束していますが、今日まで彼はそうしていませんでした。しかし、私はthreadあなた自身でそれを行う方法を見つけました。

しかし、少し変更する必要があります。私のバージョン:

$.fn.dataTable.Api.register("isColumnSearchable()", function(colSelector) { 
     var idx = this.column(colSelector).index(); 
     return this.settings()[0].aoColumns[idx].bSearchable; 
    }); 

    $.fn.dataTable.Api.register("setColumnSearchable()", function(colSelector, value) { 
     if(value!==this.isColumnSearchable(colSelector)) { 
      var idx = this.column(colSelector).index(); 
      this.settings()[0].aoColumns[idx].bSearchable = value; 
      if(value===true) 
      this.rows().invalidate(); 
     } 
     return value; 
    }); 

マイsetFilterFunction:。

function setFilter(table,col,value){ 
    if(value== undefined || value=="" || value==0) { 
     value = ""; 
     table.rows().invalidate(); 
    } 
    else { 
     value = "\\b" + value + "\\b"; 
    } 
    var oldsearchable = table.isColumnSearchable(col); 
    if (!oldsearchable) 
     table.setColumnSearchable(col, true); 
    table.column(col).search(value,true).draw(); 
    if (!oldsearchable) 
     table.setColumnSearchable(col, false); 
} 

重要な部分は

this.rows())(無効です。

これは非常にコストがかかりますが、回避策を動作させるためには、DataTableの内部キャッシュをクリアする必要があります(フィルターボタンとグローバル検索が連動するためです)。 この機能がすぐにコアに統合されることを本当に願っています!

関連する問題