2017-05-03 56 views
0

我有一種情況,我使用相同的Asp.Net MVC頁面來顯示基於一些querystring值的不同數據集。即?isValid=true/falseDataTable.Net修改stateSave參數?

我正在使用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); 
    } 
}; 

回答

0

使用數據表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 
     } 
    } 
};