如何恢复已使用后续XHR查询填充的表的状态



我有一个DataTable表,它首先由XQuery填充,XQuery获取数据库中的整个数据集。每条记录都有一个超链接,可将用户带到"详细信息"页面。当用户从详细信息返回时,他们应该在离开时找到表格。

带有该表的主页面还有一个高级搜索表单,用户可以从中筛选结果。提交表单时,JavaScript会执行另一个查询,这次是通过XHR,并重新填充表。

现在,完整记录表(即,当用户不执行高级搜索时(一切都很好。我还在表的初始化中加入了stateSave: true选项,这样当用户从"详细信息"页面返回时,就可以在离开时找到表。

当执行高级搜索时,问题就开始了。在这种情况下,当进入"detail"页面并返回时,表不再存在,因此我需要使用保存在sessionStorage中的参数请求一个新的XHR,这很好。然后,我需要把桌子放原样。我该怎么做?如果我加上:

var table = $('#mainTable').DataTable();
$('#mainTable').on('page.dt', function () {
var page = table.page();
sessionStorage.setItem('pageTable', page);
table.state.save()

然后使用该page将高级搜索表获取到用户在"详细信息"页面的"后退"按钮触发的新XHR查询后与table.page(parseInt(page)).draw('page')协商的页面,完整记录表上的stateSave: true被忽略。此外,我还想保存诸如列排序之类的东西。是否有一种简单的方法可以在用户点击超链接时保存高级搜索表的当前状态,并将表恢复为用户返回时的状态,而无需在后台执行新的高级搜索查询,或者在用户离开主页进入详细页面时,执行并重新初始化所有参数(页面、排序、滚动(的表格?

出于某种原因,我觉得这不是一个简单的解决方案。在随后的XHR查询之后恢复表的完整状态似乎很麻烦。我已经通过服务器端XQuery重新填充表解决了这个问题。这样一来,无论表格内容如何,stateSave: true都会获得荣誉。

最新更新