jQuery Datatable,保存表的状态,如分页,搜索等

时间:2012-04-24 21:01:44

标签: jquery datatable pagination savestate

所以我使用这个属性“bStateSave”:true来保存jQuery Datatable的状态但是由于某种原因它对我不起作用。当我进行页面刷新时,它不会保存搜索结果和分页等。还有一些其他参数需要与这个参数一起使用。我主要是通过这个页面上的信息

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

这个代码太大了,无法发布,我不确定我应该发布什么剪辑。在此先感谢您的帮助。

3 个答案:

答案 0 :(得分:7)

首先,您要确保拥有Cookie,在加载页面后跳转到Chrome,点击“设置”,然后“显示高级设置”,在隐私部分点击内容设置。

以下是该网站的代码示例,该功能在我的网络应用中运行良好,并确保您拥有最新版本的插件。

$('#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);
    }
});

这段代码的作用是创建一个本地存储而不是cookie,并使用特定页面而不是仅使用名为Datatables的通用标识符,这样如果你在另一个页面上有一个表,就不会有冲突。这段代码不会做什么,如果您使用ASP.NET控件和gridview,如果您使用ASP.NET内置的通用CRUD操作(如EDIT / DELETE / UPDATE)和编辑,此代码将不会保存分页状态item在分页页面3上,在回发后默认为第1页,甚至通过AJAX进行部分回发。

答案 1 :(得分:4)

我知道这个答案不是关于这个旧版本的数据表,但我相信它会对新手有所帮助。

Datatables API从2011年到现在发生了很大变化。 要保存数据表的状态,请使用HTML5 LocalStorage或DB(ajax回调)。 要使用localStorage启用状态保存,请执行以下调用:

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

如果您想使用 sessionStorage 而非 localStorage

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

如果要使用数据库以避免将它们存储在浏览器中,则必须使用选项stateSaveCallbackstateLoadCallback中定义的回调函数。

这是一个包含示例和源代码的教程,向您展示如何实现上述所有方法:Datatables state save client and server-side

答案 2 :(得分:0)

在浏览器中检查时,您是否看到了Cookie?我正在使用Chrome和开发人员工具查看您发送的链接的当前Cookie。我在我的机器上看到一个名为“datatables.net”的cookie。在尝试自定义DataTables代码时,您是否看到此cookie?