我正在使用带有多个搜索框的数据表,并且启用了 stateSave。该表确实会保存状态,但重新加载表时,搜索框不会保存。
例如,我有 3 列...图书作者、图书标题和图书 ISBN。我为每列都有一个搜索框,以提高搜索能力。如果我在作者中搜索“Mark”,则会按预期显示作者中名称为“Mark”的所有结果。刷新页面或执行任何其他会强制表重新加载的操作(例如添加书籍),会显示保存的搜索结果,但搜索框为空。为了让所有项目重新出现,我需要转到图书作者搜索框并按退格键。
那么...如何保存 searchByAuthor 文本框的状态?
或者...我怎样才能获得搜索到的值,以及它用于哪一列?如果我能得到它,我就可以重新填充正确的搜索框。
最佳答案
首先,参见this forum post插件作者说
This is expected. The filtering inputs are not something DataTables has any knowledge of - you call the
column().search()
method from them, but that could be from anywhere), therefore it doesn't (and can't) have the ability to reinsert the values into the inputs.
不过,他也提供了一个解决方案,就是使用state.loaded()
API调用来获取保存状态的值,并从中获取列中的值搜索框。执行此操作的方法如下(here's a link 到此示例所在的 state.loaded()
文档):
$(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()
文档。
如果有任何不清楚的地方,请查看这些链接,我解释的大部分内容都是直接从它们获得的,并且将进行更详细的解释。
关于jquery - 在数据表中保存/恢复搜索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38441050/