質問: DataTablesを使って、ブラウザ上でテーブルを表示しております。 テーブルの一番下の行にカラムごとの検索窓を設置し、column.searchを実行することでカラム単位の検索も可能にしました。そこまではよかったのですが、リロードやページ移動した際に「オーダー、現在のページ、1ページの表示数、検索文字列」をセッションでキープしようとした際、問題が起きました。 各パラメータをセッションで記憶しておき、読み込むところまではうまくいきました。オーダー、現在のページ、1ページの表示数はリロードしても維持されるよう組むことができました。しかし、DataTable初期化時に渡すoptionsで、どんなパラメータを渡せば初期状態からcolumn.searchと同様の動作を行うことができるかわからないという状況です。 ### 該当のソースコード ``` $("table").dataTable({ "ajax":{ url:"example" }, "processing":true, "serverSide":true, "columns":[/*カラム定義*/], "pageLength": pageLength, // キャッシュで記憶しておいた1ページの表示数 "displayStart": displayStart, // キャッシュで記憶しておいた現在のページ "order": [/*オーダー*/] /*他にどんなパラメータを渡せばcolumn.searchと同じことができる???*/ }); ``` ### 試したこと 非圧縮なjquery.datatables.jsをステップ実行し、どこでどんな値が展開されてサーバへのリクエストパラメータになるかを調べました。そして、aoPreSearchColsという配列の中にデータが入っていれば、サーバへのリクエストパラメータのcolumns[i][search][value]、columns[i][search][regex]に分解される、というところまでは判明しました。しかし、コードを追っているかぎり、そのaoPreSearchColsというのは一度検索を実行しないと保存(_fnSaveState)されず、optionsからパースされる処理を見つけることができませんでした。 ### 補足情報(言語/FW/ツール等のバージョンなど) DataTables 1.10.7
回答: preInit か preXhr イベント時に column().search().search) すれば「表示と同時に検索」にほぼほぼ近くなりませんか? `$(document).one()` でイベントを捉えれば「初回のみ」に限定も出来ると思います。