JQuery1.8 Datatables如何在点击按钮时保存状态?

5
我有一个包含表格、"home"和"back"两个按钮的JSP页面,并已经在其中导入了jquery.datatable.js。
当点击"home"按钮时,页面应该加载而不保存任何分页或筛选。当点击"back"按钮时,表格应该保留所有筛选和分页。
我尝试在初始化数据表时将"bStateSave"标志设置为true,但这总是加载带有筛选和分页的表格。
是否有办法在点击"back"按钮时以保存的状态加载表格,在点击"home"按钮时以原始状态加载表格?
1个回答

4

对于DataTables 1.10:

以下是与状态保存相关的DataTables 1.10API函数:

state()
获取表格上次保存的状态

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

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

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

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

对于DataTables 1.9及更早版本:

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

您需要使用 bStateSave: true 初始化选项来启用状态保存。

选项1:使用document.cookie:

下面是一个旨在清除包含状态数据的cookie的技巧。 当用户点击“首页”按钮时,您需要执行下面的代码。 重要提示:请使用您的表格ID替换example

// 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;
    }
  });
});

谢谢您的回复 :) - swathi ethiraj
但是我的应用程序使用的是jQuery 1.8.2版本,我无法更改版本,必须使用该版本进行实现。 - swathi ethiraj
@swathiethiraj,1.10 是 DataTables 版本,不是 jQuery。您使用的是哪个 DataTables 版本? - Gyrocode.com
我正在使用1.8.2版本的datatable。 - swathi ethiraj
@swathiethiraj,让我看看能否更新您的DataTables版本的答案。 - Gyrocode.com

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接