JQuery1.8数据表在单击按钮时保存状态

swa*_*raj 5 javascript pagination state-saving jquery-datatables

我有一个带有表的jsp和两个按钮"home"和"back",并在其中导入了jquery.datatable.js.

单击"主页"时,页面应加载,不保存任何分页或过滤器.并且在单击"返回"时,表格应该保存所有过滤器和分页.

我在初始化数据表时尝试将"bStateSave"标志设置为true.这总是使用过滤器和分页加载表.

有没有什么办法可以点击"返回"按钮加载具有保存状态的表格,点击"主页"按钮时可以加载原始状态

Gyr*_*com 4

对于数据表 1.10:

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

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

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

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

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

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

对于 DataTables 1.9 及更早版本:

不幸的是,没有直接的 API 方法来清除保存的状态。

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

选项 1:使用 document.cookie:

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

// Reset current state
document.cookie = name + 'SpryMedia_DataTables_' + 'example' + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
Run Code Online (Sandbox Code Playgroud)

选项 2:使用 fnStateLoadParams:

或者,您可能希望使用fnStateLoadParams 回调函数来确定何时加载或忽略状态数据。通过分别向变量分配true或来确定页面加载时是否应加载或忽略状态:falseloadStateParams

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

       return loadStateParams;
    }
  });
});
Run Code Online (Sandbox Code Playgroud)