2011-11-14 14 views
1

DataTablesIgnitedDatatables(CodeIgniterライブラリ)を使用しています。テーブルは問題なく生成されますが、検索/フィルタを適用すると、一度に1つの列のみをフィルタリングできます。私が "bServerSide"をfalseに設定すると動作しますが、サーバー側の機能は失われます。例ではDataTables:サーバー側のすべての列を検索

、これは動作しています: http://datatables.net/release-datatables/examples/ajax/custom_data_property.html

これは(サーバー側)ではないながら: http://datatables.net/release-datatables/examples/data_sources/server_side.html

これは、サーバー側を実行するときに達成することはできませんか?

これです(置き換えられたデータと短縮と)私のJSONレスポンス:

{"sEcho":0,"iTotalRecords":45438,"iTotalDisplayRecords":45438,"aaData":[["abc","12345","[email protected]","","","2010-01-27 22:31:10","Edit<\/a> Delete<\/a>"],["abc2"," test123","[email protected]","","","2008-06-15 22:09:33","Edit<\/a> Delete<\/a>"]],"sColumns":"fname,lname,email,phone,cellphone,created,edit"} 

のJavaScriptコード:

$("#members").dataTable({ 
    "bProcessing": true, 
    "bServerSide": true, 
    'sAjaxSource': '<?php echo base_url();?>members/listener', 
    "fnServerData": function (sSource, aoData, fnCallback) { 
     $.ajax({ 
      "dataType": 'json', 
      "type": 'POST', 
      "url": sSource, 
      "data": aoData, 
      "success": fnCallback 
     }); 
    }, 
    "bLengthChange": false, 
    "aaSorting": [[ 0, "asc" ]], 
    "iDisplayLength": 15, 
    "sPaginationType": "full_numbers", 
    "bAutoWidth": false, 
    "aoColumnDefs": [ 
     { "sName": "fname", "aTargets": [ 0 ] }, 
     { "sName": "lname", "aTargets": [ 1 ] }, 
     { "sName": "email", "aTargets": [ 2 ] }, 
     { "sName": "phone", "sWidth": "80px", "aTargets": [ 3 ] }, 
     { "sName": "cellphone", "sWidth": "100px", "aTargets": [ 4 ] }, 
     { "sName": "created", "sWidth": "120px", "aTargets": [ 5 ] }, 
     { "bSortable": false, "sName": "edit", "sWidth": "115px", "aTargets": [ 6 ] } 
    ] 
}); 

ありがとうございます!

答えて

1

サーバー側をフィルタリングすると、SQLクエリを介してフィルタリングしていることになります。これは投稿したexampleに記載されています。

  • フィルタリング
  • NOTEは、これは任意のフィールドに単語によってそれを
  • 単語を行い、内蔵のDataTableフィルタリングと一致していません。それはここで行うことは可能ですが、非常に大きなテーブル上の
  • 効率
  • を懸念、およびMySQLの正規表現の機能は、あなたがやりたいことができ、基本的に

非常に限られている(正規表現は、すべての列を一致させます)しかし、それはパフォーマンスサーバー側を殺すつもりです。

私が通常行っていることは、各列にフィルタを用意することです。フィルタリングする必要があります。

関連する問題