3

jqGrid を使用していloadonece: trueます。クライアント側のソートとフィルタリングを使用しています。8000 レコードのグリッドを検索しようとすると、スクリプトが応答しないというエラーが発生しました。そのため、データに制限があるかどうか疑問に思っていました。jqGridのドキュメントでは、データサイズの制限は見つかりませんでしたloadonce:true.

4

2 に答える 2

1

制限は非常に依存しています

  • 使用するウェブブラウザ。IE6にはさまざまな低速のJavaScriptエンジンがあります。たとえば、GoogleChromeには高速のエンジンがあります。すべてのWebブラウザーの新しいバージョンはすべて、JavaScriptのパフォーマンスを向上させます。
  • 使用するjqGridのオプション。大きなページサイズ(値)を使用する場合は、オプションrowNumを使用することが非常に重要です(詳細については回答を参照してください)。ループのような、または特にループ内のメソッドの使用を減らす必要があります(たとえば、または内のすべての行のループ)。その代わりに、およびカスタムフォーマッタを使用する必要があります。gridview: truesetCellsetRowDataloadCompletegridCompletecellattrrowattr
  • 使用する列の数(非表示の行を含む)。列が多いグリッドは、グリッドのパフォーマンスを低下させます。

一般に、8000行のローカルグリッドは使用しません。約1000行を超えるローカルグリッドのパフォーマンスは十分に遅いです。サーバー側のページング、並べ替え、フィルタリングを使用することをお勧めします。ネイティブコードですべての機能を実装し、データベースのインデックスを使用できるSQL Serverは、JavaScriptと同様にすべてをはるかに効果的に実装できます。

于 2012-11-19T08:31:15.730 に答える
0

私のプロジェクトでは最近、約18000レコードで同じ問題が発生しました。ChromeとFirefoxではかなり妥当な時間で動作しましたが、IE8では発生したのと同じエラーが発生しました。8kレコードで十分かどうかを定義する際に考慮する必要のある多くの要因があり、それらのいくつかは次のとおりです。

  • 表示している列の数
  • 各列に使用するフォーマット
  • jqGridの表示を裏付けるデータの量
  • あなたが持っている最初のソートロジック。

さらに、ユーザーが個々のレコードを見る可能性が非常に低いブラウザに8000レコード全体を送りたいかどうかを検討する必要があります。本当に必要な場合は、8000レコードを処理するために、サーバー側のページ付けの使用を検討することをお勧めします。サーバー側のページ付けの注意点は、サーバー側での並べ替え、検索、およびフィルタリングに注意を払う必要があることです。

于 2012-11-19T08:37:30.677 に答える