2014-07-15 73 views
0

我使用的插件很少(ColVis,ColReorderWithResize和ColumnFiltering)的DataTables 1.9.4。我使用服務器端通信的參數是:在jQuery數據表格中渲染大型服務器端數據集

  • 「bServerSide」
  • 「fnServerData」
  • 「sAjaxSource」

現在,讓我們說我有顯示3000行大約25列沒有分頁(「iDisplayLength」:-1)。 json包含1MB左右的數據權重,服務器將其發送到數據表需要大約2秒的時間。

問題是這些3000行的渲染需要幾秒鐘(大約5-10,這是不可接受的)。在IE上,它可能需要更多,導致「腳本不響應」錯誤。

我希望我能以某種方式加快這個過程 - 即通過顯示讓100行和其餘的在後臺渲染。有沒有更好的辦法?我知道有一個Scroller插件 - Scroller,但我需要搜索所有可用的數據,所以不能選擇滾動。

+1

的數據表搜索將掃描即使您正在使用分頁完整數據集。 – pmandell

+0

想想下面的想法:使用純jQuery創建表,顯示50個結果。然後添加一個「顯示更多結果」按鈕。每次用戶單擊此按鈕時,都會從數據庫中加載更多50行並追加到已存在的表中。 – EduardoFernandes

+0

我需要爲瀏覽器搜索繪製所有行(Ctrl + F),這就是爲什麼我想在後臺渲染表格的原因。它不應該花費太多時間,我可以顯示某種消息,說表格正在渲染。 – Marcin

回答

1

不幸的是,數據表不適用於大型數據集。解決方法是使用服務器端處理。這意味着你需要實現基於頁面索引返回的數據。

這裏的例子:
http://datatables.net/forums/discussion/2651/alternative-server-side-php-script http://www.datatables.net/examples/server_side/server_side.html

+0

我已經爲datatables的服務器端處理實現了後端邏輯,遠比你提供的更復雜。我不能使用分頁(**在一個特定的表**),因爲我需要在開始時繪製所有記錄。 – Marcin

+0

請說明你的意思,當你說你不能使用分頁。另外,如果您打算將所有記錄(假設爲1000秒)發送到數據表,則需要一段時間才能使用數據表示來呈現數據。唯一的辦法是通過服務器處理分頁一次發送一小部分數據。 – user1784014