2011-02-03 24 views
1

デュアルページング(クライアント側とサーバー側)を行う簡単な方法はありますか?jqGridデュアルページング(クライアント側とサーバー側の両方)

今は固定 'rowTotal'(rowTotal> rowNum)を使用してクライアントサイドページング(loadonce = true、非常に高速で動作します)を使用しています。問題は、rowTotal < Total-Records-in-DBです。そのため、データベースからの最初のrowTotalレコードとクライアント側のページングだけを表示しています。 DBからすべてのレコードをロードすることはオプションではありません(そのため、ページンググリッドを使用する理由はpです)。

一方、サーバー側のページングだけではパフォーマンスが低下します(そのため、AJAXコンポーネントを使用する理由があります)。だから私は、両方の世界で最高の成果を上げることができると考えました。

これは自動的に実行されるのが理想的です。これは次のとおりです。ページャは最初のrowTotal/rowNum結果をメモリにロードされたNページの最初のものとして表示する必要があります(クライアント側)。ページN + 1にジャンプするときに、バックエンドにヒットし、次の行の結果を取得する必要があります。私が今見ている問題は、結果セットのサイズをデータベースのレコードの代わりにrowNumで割ったものに基づいてページ数が計算されていることです(多くのページャプロパティは不変です)。(

これは、任意の意味をなさない?jqGridのコードをハッキングすることなく、これを実現する簡単な方法はありますか?

よろしく!

答えて

3

あなたは要件を持っている最初の人ではない、例えばthis questionを参照してください。あなたの行動をたとえば、ユーザーが列ヘッダーをクリックした場合、のみをlとすると、データのソートを使用できなくなります。 ocalデータがソートされますが、これは間違っています。

私のexpirienceでは、AJAXあたりのサーバーサイドページングは​​非常に迅速に動作します。すべてはサーバー側の実装に依存しますが、最適な実装の場合、サーバー側で対応するクエリの結果がキャッシュされ、次/前のページがSQL Serverキャッシュから取得されます。

純粋なサーバー側のページングを使用し、必要に応じてパフォーマンスチューニングを行うことをお勧めします。

+0

+1 2番目と3番目の段落です。 (@NicoDB - 純粋なサーバー側のページングは​​いつも私にとってもうまくいっています。) – JasCav

+0

迅速な対応に感謝します。並べ替えに関して、それは私が欲しいものです:インビュー(ページ単位で)並べ替え。私は外部のフィールドを使用して、サーバーサイドの結果セットを事前にフィルタリングし、グリッドにデータをプッシュします。なぜなら、それらは巨大で非常に複雑なためです(多くの結合、パフォーマンスは関係ありません)!私が達成しようとしているのは、onPagingイベントで簡単に行うことができます。唯一の問題は、ページャー情報が不正確で読み取り専用であることです。( – NicoDB

+0

@NicoDB - これは問題ありませんか? 「ページャ情報が不正確で読み取り専用です」という同じ問題に直面しています。 – Vipresh

関連する問題