2012-04-03 22 views
1

私は約2千万の行のリストボックス(テーブル)を表示したいと思います。 これを行うにはどうすればよいですか?メモリ使用量を減らし、サーバーの停止(応答停止)をさせないでください。リストボックス(テーブル)の巨大なデータ

理論的なアイデアがあっても、共有してください(実装しようとします)。 非常に緊急に解決が必要です。

すべての行を一度に読み込むことはできません。私はスクロールするたびにサーバーから新しい行を尋ねる必要があります。私はそれを試みたが、私のスクロールは十分に滑らかではない。

おかげ&よろしく、 アマン

+0

を使用して同期および非同期の方法でデータを取得することができます注意してください」オプトマイゼーションに長時間を費やして、コンポーネントベンダーの何人かが何ヶ月か何月も費やしていることを知っています。 –

+2

20m * anything *をロードしたリストボックスまたはテーブルは、質問のタグのいずれかに関連するとちょっと狂っていますが、どうしようとしていますか? –

+0

@krystanhonourは私が手に入れることができるそのようなオープンソースコンポーネントを提案できますか? –

答えて

3

ちょうど最初の100個のエントリを取得し、下へスクロールクライアント一度あなたがように別の100個のエントリとを追加していないのはなぜ。

+0

次へ詳細を説明することができます。 –

+0

100個のエントリを読み込み、スクロールバーの位置を確認します。スクロールバーがページの最下部にある場合(すべてのエントリが表示されている場合)、ajaxリクエストを送信し、既存のエントリの後に100個のエントリを追加します。 – Eric

+0

その場合、私はそれに応じてスクロールの高さを設定できるように各行の高さを知る必要があります。しかし、私は行の中に次の行にラップされている1行に収まらないようなデータを持っています。 –

0

http://books.zkoss.org/wiki/ZK Developer's Reference/MVC/View/Renderer/Listbox Rendererを使用できます。起動するには

public void render(Listitem listitem, Object data, int index) 

、あなたはrenderメソッドから、インデックスによって手元にデータソースからレンダリングする要素を取得するような方法でレンダリング実装することができます。標準キャッシュ(Hibernateがある場合)を使用することも、カスタムキャッシュを使用することもできます(EhCacheも参照)。

@Erikソリューションは実装が非常に高速です。あなたはボタンを作ることができるので、もっと多くのレコードを読み込むには時間がかかり、実際にもっと読み込む必要があると思うでしょう。スクロールするとリストボックスがちょうどハングアップすることがあります。

また、一度に表示するレコードの最大数に上限を設けてください。サーバーのメモリを汚染しないでください。

0

テーブル値のページングを行い、必要に応じて特定のレコード数を取得します。

dataTable plugingを使用すると、データレコードのページ番号を付けることができます。

私はそうあなたをここに重い物を持ち上げるを行うために構築済みのコンポーネントを探したいあなたが話しているデータの量と真剣にこのライブラリ

関連する問題