【问题标题】:JQuery1.8 Datatables saving state on click of a buttonJQuery1.8 Datatables单击按钮保存状态
【发布时间】:2015-08-28 03:43:53
【问题描述】:

我有一个jsp,里面有一个表格和两个按钮“home”和“back”,并在其中导入了jquery.datatable.js。

点击“主页”后,页面应加载且不保存任何分页或过滤器。并单击“返回”,表格应保存所有过滤器和分页。

我尝试在初始化数据表时将“bStateSave”标志设置为真。这总是会加载带有过滤器和分页的表格。

有什么方法可以在单击“返回”按钮时加载具有保存状态的表格,并在单击“主页”按钮时加载其原始状态

【问题讨论】:

    标签: javascript pagination jquery-datatables state-saving


    【解决方案1】:

    对于 DataTables 1.10:

    下面是API functions 与状态保存相关的DataTables 1.10:

    state()
    获取表格最后保存的状态

    state.clear()
    清除表格的保存状态。

    state.loaded()
    获取初始化期间加载的表状态。

    state.save()
    触发状态保存。

    您需要有stateSave: true 初始化选项才能启用状态保存。然后,当用户点击“主页”按钮时,您可以调用$('#example').DataTable().state.clear()清除保存状态。

    对于 DataTables 1.9 及更早版本:

    很遗憾,没有直接的 API 方法来清除保存的状态。

    您需要有bStateSave: true 初始化选项才能启用状态保存。

    选项 1:使用 document.cookie:

    以下是一个旨在清除包含状态数据的 cookie 的 hack。 当用户单击“主页”按钮时,您需要执行以下代码。 重要提示:example 替换为您的表 ID。

    // Reset current state
    document.cookie = name + 'SpryMedia_DataTables_' + 'example' + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
    

    选项 2:使用 fnStateLoadParams:

    或者,您可能希望使用fnStateLoadParams 回调函数来确定何时加载或忽略状态数据。通过将truefalse 分别分配给loadStateParams 变量来确定在页面加载时是应该加载还是忽略状态:

    $(document).ready( function() {
      $('#example').dataTable( {
        "bStateSave": true,
        "fnStateLoadParams": function (oSettings, oData) {
           // Disallow state loading by returning false  
           var loadStateParams = false;
    
           return loadStateParams;
        }
      });
    });
    

    【讨论】:

    • 感谢您的回复 :)
    • 但我的应用程序使用 jquery 1.8.2,我无法更改版本,必须使用它来实现
    • @swathiethiraj,1.10 是 DataTables 版本,而不是 jQuery。您使用的是哪个 DataTables 版本?
    • 我使用的是 1.8.2 数据表版本
    • @swathiethiraj,让我看看是否可以更新您的 DataTables 版本的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    相关资源
    最近更新 更多