DataTable.Net修改stateSave params?

时间:2017-05-03 16:31:52

标签: jquery asp.net-mvc datatables

我遇到的情况是我使用相同的Asp.Net MVC页面根据一些查询字符串值显示不同的数据集。即?isValid=true/false

我使用 Datatables.net 格式化网格显示。我正在使用 serverSide 处理和 AJAX 来分页数据。我还使用stateSave参数来保存列顺序和搜索术语等。

作为一个例子,当我使用一个数据集查看网格时,我得到10页。如果我然后选择要查看的第10页,然后使用其他数据集转到页面,我可能只有5页,但saveState设置为第10页,所以我得到一个空格,因为实际上只有5数据页面。

我正在尝试找到一种方法将页面值重新调整到其中一个现有页面,以便网格显示一些内容。

有没有办法使用jquery / javascript将页面设置为新值?或者甚至默认将其设置为第一页?

我认为这会进入drawCallback事件?

var table = $('#myTable');

table.dataTable({
    serverSide: true,
    scrollX: true,
    drawCallback: function(settings, json) {
        $('.dataTables_scrollBody thead tr').css({ visibility: 'collapse' });
    },
    stateSave: true,
    stateLoadParams:function(settings,data){
        console.log("params",data);
    }
};

1 个答案:

答案 0 :(得分:0)

使用DataTables api检查page.info()并相应地更改start页面。

var table = $('#myTable');

table.dataTable({
    serverSide: true,
    scrollX: true,
    drawCallback: function(settings, json) {
        $('.dataTables_scrollBody thead tr').css({ visibility: 'collapse' });
    },
    stateSave: true,
    stateLoadParams:function(settings, data){
      var api = new $.fn.dataTable.Api(settings);
      var info = api.page.info();
      if (data.start > info.pages) {
        data.start = 1; // or (info.pages) for last page
      }
    }
};