我正在使用带有多个搜索框的数据表,并启用了stateSave。该表确实会保存状态,但在重新加载表时,搜索框不会保存。
例如,我有3列...书籍作者,书名和书籍ISBN。我为每列提供了一个搜索框,以提高搜索能力。如果我在作者中搜索“Mark”,则会按预期显示作者中名为Mark的所有结果。刷新页面或执行任何其他操作会强制表重新加载(例如添加书籍),将显示已保存的搜索结果,但搜索框为空白。要让所有项目重新出现,我需要转到图书作者搜索框并按退格键。
那么......如何保存searchByAuthor文本框的状态?
或者......如何获取搜索到的值以及使用的列?如果我能做到这一点,我可以重新填充正确的搜索框。
答案 0 :(得分:3)
首先,请参阅
插件的作者this forum post这是预期的。过滤输入不是DataTables所知的 - 您从它们调用
column().search()
方法,但这可以来自任何地方),因此它不能(也不能)重新插入值进入投入。
但是,他也提供了一个解决方案,即使用state.loaded()
API调用来获取已保存状态的值,然后您可以从列搜索框中获取值。您这样做的方式如下(此state.loaded()
文档的here's a link来自此示例):
$(document).on( 'init.dt', function ( e, settings ) {
var api = new $.fn.dataTable.Api( settings );
var state = api.state.loaded();
var searchText = state.columns[/*columnNumber*/].search;
} );
然后,从那里,您可以使用searchText
重新填充字段中的值。有关您可以从state
变量获取哪些数据的详细信息,请查看this link到state()
文档。
如果有任何不清楚的地方,请查看这些链接,我解释的大部分内容都是直接从他们那里获得的,并将对其进行更详细的解释。