JQuery1.8 Datatables单击按钮保存状态

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

【参考方案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 版本的答案。

以上是关于JQuery1.8 Datatables单击按钮保存状态的主要内容,如果未能解决你的问题,请参考以下文章

单击按钮时,如何触发 jquery datatables fnServerData 通过 AJAX 更新表?

如何在按钮单击时启用和禁用 jquery dataTables 的分页

JQuery DataTables - 删除 fnFilter 并显示所有结果

当数据源是一个数组时,jQuery DataTables刷新网格

当数据源是数组时,jQuery DataTables 刷新网格

无法从 jQuery DataTables 中触发模式