如何在数据表中不再存在statesave页面时清除状态?

时间:2016-06-15 05:57:52

标签: datatables

我的数据表以这种方式声明:

"processing": true
,"serverSide": true
,"stateSave":true
,"stateDuration": 60*60*24
,"ajax":{
   "url":"/approval/search.json"
   ,"type":"post"
}

我的代码清除状态:

if(page doesn't exist){
  table.state.clear();
  table.draw()
}

我不知道怎么判断页面是否不存在。我已经尝试了table.page.info(),但无论页面是否有信息,它显示的数据都是相同的。

3 个答案:

答案 0 :(得分:0)

经过SO MUCH的试验和错误,我终于成功了:

,"fnDrawCallback":function(){
    if(table.row().data()===undefined){
        table.state.clear();
        location.href=url
    }
}

答案 1 :(得分:0)

数据表更新版本的更新答案:

drawCallback: function (settings) {
    let api = this.api();

    // fix pagination if saved page is empty
    if (api.page() > 0 && api.rows({page: 'current'}).count() === 0) {
        api.page('previous').state.save();
        location.reload();
    }
}

如果当前页面不存在,这会将状态设置为上一页,然后重新加载页面。

答案 2 :(得分:0)

我可能使用了先前的答案并进行了更改。它对我来说很完美:

drawCallback: function (settings) {
    let api = this.api();
    var info = api.page.info();
    if (info.pages!=0 && (api.page() > 0 && api.rows({page: 'current'}).count() === 0)) {
        api.page('first').state.save();
        window.location.reload();
    }
}