从dataTables stateSave清除排序

时间:2017-04-26 13:10:56

标签: jquery datatables

  

我有使用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()

  

我的状态也保存了列但无法将其重新排序为默认列。

1 个答案:

答案 0 :(得分:4)

你看过stateLoadParams吗?

dttblEnrolledUser = $('#tblUsers').dataTable({
  ...
  stateLoadParams: function( settings, data ) {
    if (data.order) delete data.order;
  }
})

每次刷新时都会有效地重置保存的排序顺序。