2016-04-14 13 views
0

要件:データテーブル:チャンクで負荷データ

私はjQuery DataTablesに、サーバーから大きなdatasetをロードするために探しています。

一度にデータ全体を読み込むのではなく、テーブルチャンクをチャンクで読み込みたいとします。ユーザーがページングインデックスをクリックすると、数百行のAjax呼び出しをフェッチします。

例:

ので、グリッドの1ページあたり10個のレコードが表示されますと、改ページは、我々は別の500 recordsをフェッチしに追加する第50回インデックスの.onクリック(10(records per page)*50(pages) = 500(records)50 index件までとなります同じdatatableを入力し、インデックスは100になります。

私は1500レコードのデータセットを持っていますが、一度には500レコードしか取得できません。

私は、SOdatatable forumでさまざまな質問を調べていますが、これまでのところ解決策は見つかりませんでした。

のDataTableフォーラム:Trying to do client side lazy loading

+2

[サーバー側処理](https://datatables.net/manual/server-side)の使用はいかがですか? –

+0

ありがとう@ Gyrocode.com、それは動作します。 –

答えて

0

私はあなたのサーバーについては何も知らないので、私は概念的な答えを与えるでしょう。基本的にクライアント上にはpage変数があり、0に初期化されます。サーバーにはchunkという変数があります。データをロードする必要があるたびに、pageをインクリメントし、pageをパラメータとしてajaxリクエストを送信します。

サーバーは、page * chunkから(page * chunk)+chunk-1)の行をデータベースに照会します。これには、すべての行を選択し、各行に索引を付けてから、適切な塊を検索する必要があります。 [包含する、排他的な]チャンクのための-1に注目してください。

例:

page = 0; chunk start index = page * chunk = 0 chunk end index = page * chunk + chunk - 1 = 9

は、データベースから行0-9を取得します。

page = 1; chunk start index = page * chunk = 10 chunk end index = page * chunk + chunk - 1 = 19

は、データベースから行10-19を取得します。

page = 2; chunk start index = page * chunk = 20 chunk end index = page * chunk + chunk - 1 = 29

は、データベースから行20-29を取得します。

chunk変数を2回呼び出して、1回の呼び出しで必要なレコード数を2つにすることができます。