2014-03-05 65 views
1

我正在使用jQuery數據表插件來顯示我的頁面上的記錄列表。我從服務器端獲取所有數據,並從服務器端處理異教。我希望每當我刷新表格時頁面狀態都應該保持。我用下面的插件來實現這個fnStandingRedraw在數據表插件中顯示沒有記錄

oTable.fnStandingRedraw(); 

這工作正常,除非我是在表的最後一頁上,我刪除該網頁的所有記錄,並調用fnStandingRedraw()功能,則說明該表是空的,當點擊上一頁時,它會再次顯示所有記錄。

這裏要說的是,我使用

$.fn.dataTableExt.oApi.fnStandingRedraw = function (oSettings) { 
if (oSettings.oFeatures.bServerSide === false) { 
    var before = oSettings._iDisplayStart; 

    oSettings.oApi._fnReDraw(oSettings); 

    // iDisplayStart has been reset to zero - so lets change it back 
    oSettings._iDisplayStart = before; 
    oSettings.oApi._fnCalculateEnd(oSettings); 
} 

// draw the 'current' page 
oSettings.oApi._fnDraw(oSettings); 
}; 

Datatable Plugin Link

+0

從來沒有聽說過該插件。如果你給我們一個鏈接,你會發現它,所以我們可以理解它的作用。因爲通過查看代碼,在我看來,它只是調用oSettings.oApi._fnDraw(oSettings);當bServerSide爲true時。 ??? – mainguy

+0

我已經在問題 – Derek

+0

中包含了插件的鏈接我當然知道dataTables插件:-)我不知道standingRedraw插件。但也許@Lukasz的答案已經解決了這個問題。 – mainguy

回答

1

這是正確的行爲的fnStandingRedraw插件的代碼。這個腳本提供了再次繪製表格的方式,保持過濾/排序/分頁。因此,當你在最後一頁上,刪除所有行並呼叫站點重繪時,數據錶停留在最後一頁上並不顯示任何內容。

當然你也可以嘗試通過檢查當前表lenght趕上這樣的情況:

oTable.fnGetData().length 

,如果這段代碼返回0,你可以調用常用的重繪功能:

oTable.fnDraw() 
+0

謝謝,我在想這樣的事情。但是如果我想把用戶放在倒數第二頁呢?調用'oTable.fnDraw()'會刷新表並返回到第一頁的權利? – Derek

+0

嘗試使用'fnPageChange'函數(https://datatables.net/api#fnPageChange) –

+0

非常感謝:) – Derek

相關問題