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 回调函数来确定何时加载或忽略状态数据。通过将true
或false
分别分配给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刷新网格