DataTable 刷新后保持状态

DataTable keep state after refresh

我有一个 table 它会在一段时间内重新加载其数据,并且它应该在每次重新加载后保持状态。我试过使用 "stateSave": true 但没有成功。

有没有办法在每次数据重新加载后保持状态(搜索、分页)? clear 是让 table 失去状态的那个吗?

这是我的代码 - JsFiddle

我对 DataTables 没有太多经验,所以请保持温和。

正在保存状态,但其中一些正在被重新加载循环中的代码覆盖。

正在保存的状态:

  • 排序(点击列标题)
  • 过滤(使用全局过滤器输入控件)。
  • 每页记录数(“显示 x 个条目”)

步骤:(1) 我打开我的网页副本,并更改​​这些项目。 (2) 我关闭网页。 (3) 我re-open这个页面。以上项目保留。

正在被您的代码覆盖的状态:

  • 分页(从第 1 页移动到第 2 页)

如果我这样做,那么当我关闭并 return 页面时,我的分页选择不再在第 2 页上。

但是分页选择实际保存了。

只是当页面 re-opened 时,您的代码会立即覆盖保存的值,在第一个 table 绘制之前:

else table.clear().rows.add(data).draw();

因此,您永远看不到用户应用的先前保存的分页。

清除 table 并重新加载数据时,基本上就是应用新的分页,覆盖您保存的分页。


状态保存通过将数据保存到浏览器的本地存储来工作。它是存储页面更改(第 1 页到第 2 页)的地方。

您可以通过打开浏览器工具 (F12) 并找到 table 的本地存储条目来亲眼看到。

当您转到第 2 页时,您会看到:

这意味着:从第 10 条记录开始,每页显示 10 条记录

(注意第10条记录实际上是第11条,因为索引是zero-based)。

如果您在浏览器中观察这个 start 值,您会看到它在刷新代码运行时重置为零。