我有使用statesave和标头过滤器的数据表,见下面的代码。
dttblEnrolledUser = $('#tblUsers').dataTable({
paging: true,
searching: true,
bLengthChange: false,
info: false,
ordering: true,
columnDefs:
[{ targets: 0, orderable: false },
{ targets: 5, orderable: false }],
order: [1, 'asc'],
stateSave: true,
dom: '<"top"i>rt<"bottom"flp><"clear">'
});
这是Statesave的代码并应用过滤后的值。
var state = dttblEnrolledUser.api().state.loaded();
if (state) {
dttblEnrolledUser.api().columns().eq(0).each(function (colIdx)
{
var colSearch = state.columns[colIdx].search;
if (colSearch.search) {
$( 'input', dttblEnrolledUser.api().column( colIdx ).header() ).val( colSearch.search );
}
});
dttblEnrolledUser.api().draw();
}
// Apply the search
dttblEnrolledUser.api().columns().eq(0).each( function (colIdx) {
$('input', dttblEnrolledUser.api().column(colIdx).header()).on( 'keyup change', function () {
dttblEnrolledUser.api()
.column( colIdx )
.search( this.value )
.draw();
});
});
我想要什么?
我的主要优先事项是从statesave中删除排序,我的意思是如果用户刷新页面,排序应该在默认列上。
但此时过滤器应该与statesave一起使用。
我做了什么?
我尝试添加这样的代码。
https://datatables.net/reference/api/state.clear()
我的状态也保存了列但无法将其重新排序为默认列。
答案 0 :(得分:4)
你看过stateLoadParams
吗?
dttblEnrolledUser = $('#tblUsers').dataTable({
...
stateLoadParams: function( settings, data ) {
if (data.order) delete data.order;
}
})
每次刷新时都会有效地重置保存的排序顺序。