5

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

单击“主页”时,页面应加载而无需保存任何分页或过滤器。单击“返回”后,表格应保存所有过滤器和分页。

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

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

4

1 回答 1

4

对于数据表 1.10:

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

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;
    }
  });
});
于 2015-06-12T15:49:46.260 回答