2012-04-24 43 views
2

この属性「bStateSave」を使用しています。jQuery Datatableの状態を保存するにはtrueですが、何らかの理由でそれが動作しません。ページをリフレッシュすると、検索結果やページ番号などが保存されません。これと一緒に行く必要のある他のパラメータがありますか?私は主に掲載されるようにコードがあまりにも巨大なおかしくさjQueryページング、検索などのテーブルの状態を保存しているDatatable

http://datatables.net/examples/basic_init/state_save.html

このページの情報によりつもりですし、私は私が投稿するために使用すべき切り取らかわからないです。あなたの助けを前にありがとう。

+0

、と私は何の問題もありません。ここで

は、上記のすべてのメソッドを実装する方法を示します例やソースコードとチュートリアルです。クッキーをチェックしてみてください。少なくとも、あなたのdataTable()呼び出しをjavascriptコードに投稿できますか? – Tom

答えて

0

ブラウザで検査するときにCookieが表示されますか?私はあなたが送信したリンクの現在のクッキーを見るためにChromeとデベロッパーツールを使用しています。私は私のマシンに保存されている "datatables.net"というクッキーを見る。カスタムのDataTablesコードを試しているときにこのCookieが表示されますか?

+0

私はこの警告(dojo.cookie( "datatables.net"))を試して、 "undefined"と言います。これは何を意味するのでしょうか ?クッキーは設定されていませんか?しかし、私は内部的にAPIがそうしていると思っていました。クッキーを設定し、それを読んでテーブルの状態を保存します。 – user1006072

+0

@ user1006072 Firefoxの拡張機能Firecookieを使用することができれば、もっと詳しく説明します。SpryMedia_DataTables_ のようなものが表示されます。ボトムラインは何かがこのクッキーをブロックしています。別のブラウザを試して、変更があるかどうかを確認してください。 – Tom

+0

ありがとう@Tom。私はこれを撃つだろう。 – user1006072

7

最初に、Cookieを持っていることを確認し、ページを読み込んだ後にクロムに移動し、[設定]をクリックし、次に[プライバシー設定]セクションの[詳細設定を表示]をクリックします。

以下は、このサイトのコード例です。これは、Webアプリケーションで正常に機能し、プラグインの最新バージョンを使用していることを確認します。このコードは何

$('#MyExampleGrv').dataTable({ 
    "bStateSave": true, 
    "fnStateSave": function (oSettings, oData) { 
     localStorage.setItem('DataTables_' + window.location.pathname, JSON.stringify(oData)); 
    }, 
    "fnStateLoad": function (oSettings) { 
     var data = localStorage.getItem('DataTables_' + window.location.pathname); 
     return JSON.parse(data); 
    } 
}); 

が、代わりにクッキーのローカルストレージを行っている、とあなたは別のページの表を持っている場合だけのDataTableと呼ばれる一般的な識別子、この方法を使用して対特定のページを使用して、あるでしょう紛争はありません。このコードでは、ASP.NETコントロールとグリッドビューを使用している場合、このコードはページングの状態を保存しません。また、ASP.NETに組み込まれている一般的なCRUD操作(EDIT/DELETE/UPDATEなど)と編集itemはページングページ3にあり、ポストバック後にページ1に、そしてAJAX経由で部分的にポストバックされます。

+0

小さな警告。ウェブサイト/アプリのURLが安心している場合、この方法は時間の経過とともに徐々にローカルストレージをいっぱいにする可能性があります。このコードを拡張して、 'window.location.pathname'から任意のIDを削除することができます。 – Jess

3

この回答は古いバージョンのデータテーブルに関するものではありませんが、新参者には役立つと思います。

Datatables APIが2011年から現在に大きく変更されました。 データテーブルの状態を保存するには、HTML5 LocalStorageまたはDB(ajaxコールバック)を使用します。あなたがデータベースを使用する場合は

$(document).ready(function() { 
$('#datatable').DataTable({ 
    stateSave: true, 
    stateDuration:-1 //force the use of Session Storage 
}); 
}); 

:あなたの代わりにのlocalStorageのsessionStorageを使用したい場合は

$(document).ready(function() { 
$('#datatable').DataTable({ 
    stateSave: true, 
}); 
}); 

:あなたは次の呼び出しを行う、のlocalStorageを使用して保存状態を有効にするには それらをブラウザに格納しないようにするには、オプションstateSaveCallbackstateLoadCallbackで定義されたコールバック関数を使用する必要があります。私もそれを使用Datatables state save client and server-side

+0

私の魅力のように働いた。ありがとう! –

関連する問題