4

誰かがこれで私を助けてくれることを望んでいました。私はこれで夢中になっています。

私は DataTables グリッドをロードする状況にあり (ちなみに素晴らしい作品です!)、すべてが素晴らしいです。それから私は検索に行き、問題に遭遇します。グリッドに入力されているデータは、2 つの異なるデータベース テーブルから取得されています (これは問題ありません) が、誰かが検索を実行すると、どこに行ってデータを取得すればよいかわかりません。検索の基準を知る必要があります (つまり、タイトルまたは連絡先)。デフォルトの検索ボックスを介してサーバーから検索が呼び出されると、「sSearch_0」のような変数がすべて設定されていないことがわかります。これらはどのように設定されますか?

テーブルの初期化コードは次のとおりです。

oTable = $('#example').dataTable({
"bJQueryUI": true,
"bFilter": true,
"sPaginationType": "full_numbers",
"bPaginate " : true,
"bServerSide" : true,
"sAjaxSource" : "php/tabledata.php",
"aoColumnDefs": [
     { "bSortable": false, "aTargets": [ 0,6,8 ] },
 { "sClass": "tdCenter", "aTargets": [ 0,1,2,3,4,5,6,7,8 ] }
     ],
"fnServerData": function ( sSource, aoData, fnCallback ) {
aoData.push( { "name": "userid", "value": userid } );
$.getJSON( sSource, aoData, function (json) { 
fnCallback(json)
});
}           

});

「 fnServerData 」にデータを追加するためのオプションを調べ、実際に最初の初期化サーバー呼び出しにそれを使用しましたが、後続のサーバー呼び出しにそれを使用する方法がわかりません。「fnFilter」を使用しようとしましたが、サーバー呼び出しを実行してより多くのデータを取得することがわかりません。この時点で、デフォルトの検索ボックス以外にサーバー呼び出しを実行する方法は見当たりません。また、検索対象の列を知る方法も見られます。

誰かがここで私を助けて、正しい方向に向けることができますか?

4

2 に答える 2

2

DataTables プラグイン用にサーバーからデータを取得する場合は、bServerSide を true に設定し、sAjaxSource を適切な URL に設定し、理想的にはコールバックを実行する必要がある場合は fnServerData を構成する必要があります。

サーバー側の処理を使用する場合は、すべての並べ替え、フィルター処理、およびページングをサーバー上で処理する必要があります。DataTables を正しく構成すると、ページング、フィルター処理、または並べ替えのイベントが発生するたびに、サーバーからデータが要求されます。

DataTables サーバー側 API ドキュメント

サーバーサイド処理のPHP例

于 2010-12-20T18:38:13.547 に答える
1

この質問を参照するすべての人の利益のために、ここに私が実装したものがあります。

クライアント側 (JavaScript)

Enterキーを押すとfnFilterが実行されます。

$(tableId + " thead input").keypress( function () {
  if (event.which == 13) {
    event.preventDefault();
    oTable.fnFilter( this.value, $("thead input").index(this) );
  }
} );

サーバー側 (Ruby)

sSearch_(int) パラメータ ハッシュを見つけ、キーから列インデックスを取得します。配列から列名を取得し、検索文字列を作成します。

def column_search
  search_string = []
  params.keys.map {|x| x if params[x].present? and x.include? "sSearch_"}.compact.each do |search|
    index = search.split("_").last.to_i
    search_string << "#{columns[index]} ilike '%#{params[search]}%'"
  end
  search_string.join(' and ')
end
于 2014-02-21T08:06:28.347 に答える