2

SQL クエリから返されたデータに基づいて、複数の行の背景色を変更しようとしています。データ型として JSON を使用しており、loadComplete を使用してグリッドを反復処理し、グリッドが読み込まれた後に css クラスを追加して行に色を付けようとしました。これは機能しますが、何千もの行が返され、この方法ではグリッドの読み込みが大幅に遅くなります。グリッドが最終的にロードされるまで、ユーザーは長時間待たなければなりません。

顧客フォーマッタを使用して行に色を付けようとしたことはありません。顧客フォーマッタがトリガーされたときにグリッドをまだ使用できないため、エラーが発生すると言われているからです。顧客のフォーマッタが DOM でグリッドを使用できるようにタイムアウト期間を設定する方法に関するドキュメントを見てきましたが、回避しようとしているグリッドの読み込みが遅くなるようです。

理想的には、サーバー呼び出し (PHP) 中にテーブル データに基づいてクラスを行に割り当て、クライアント側でグリッドが読み込まれると、css スタイルに基づいて行に色を付けたいと考えています。サーバー側でクラスを割り当てるのが最も効率的な方法だと思われるので、データを複数回循環させたり、グリッドを複数回描画したりする必要はありませんか? これを行うために利用できる他の手法は何ですか?ありがとう!

4

1 に答える 1

1

あなたが望むことをするための最良の方法は、を使用することrowattrです。必要なものを正確に回答で説明しました。古いバージョンでは、古い回答で説明されているように反復し、クラスをいくつかの行に設定する必要があります。

ページ上の 1 つの要素を変更するたびに、そのページに存在する他のすべての要素の位置が再計算されることを理解することが最も重要です。最低限行う必要があるのはリフローです (こちらを参照)。gridview: truejqGridの使用オプションの場合、グリッド本体のすべての行は最初に文字列として作成され、次に1 つの操作 (innerHTMLプロパティの割り当てなど) でページに配置されます。ページングなしで多数の行を使用する場合、パフォーマンスが劇的に向上します。カスタム フォーマッタを使用する場合、cellattrまたはrowattrパフォーマンスを損なうことなく、グリッド本体の構築のデフォルト プロセスをカスタマイズできます。

カスタム フォーマッタの使用は一般的には正しいのですが、列ごとにフォーマッタを定義する必要があるという問題があります。さらに、さまざまなタイプ (チェックボックス、数値、通貨) の多くの列を使用する場合、カスタム フォーマッタの使用は適切ではありません。すべてのフォーマッタをもう一度実装するか、カスタム フォーマッタから定義済みのフォーマッタを呼び出す必要があるためです。不要なコード。

の使用法のcellattr方が優れています (こちらこちら、またはこちらを参照)。ただし、行のみの属性を設定するだけでなく、すべてのセル (列) のclass属性を設定する必要があります ( )。class<tr>

したがってrowattr、回答の冒頭で提案したように、使用するのに最適な方法を見つけました。答えでは、必要なものが正確に見つかります。

于 2012-06-06T17:36:53.183 に答える