gridview: true
私は、オプションがドキュメントで適切に説明されていないことに同意します。場合によっては(TreeGridの場合のように)、オプションが自動的に設定されます。だから私はそれが何を意味するのか、そしてなぜ私が常にgridview: true
オプションを使用し、決して使用しないことをお勧めするのかを説明しようとしますafterInsertRow
。
多くの人々は、JavaScriptとして他のいくつかのコンピューター言語から始めて、プログラムの何らかのスタイルを作成した後、Webブラウザーで実行される彼の最初のプログラムを作成します。私は3年前に同じ問題を抱えていました。HTMLページに変更を加えた後、Webブラウザが何をしなければならないかを理解することが重要です。jQueryの使用法では、それはあなたが恒久的に行うことです。
ページ上の一部のDOM要素を変更すると、ページ上に存在する他のすべてのDOM要素の位置を変更できます。フローティングモデル(のように)または他の多くのCSS設定について考える場合float: left
、Webブラウザーは既存のページのビットマップ表現を移動して、新しく挿入された要素を挿入するだけではないことを理解できます。したがって、Webブラウザは、ページに存在するすべての要素の位置を再計算し、一部を別の場所の要素から移動する必要があります。要素のCSSスタイルを変更しても、そのような名前のリフローが発生します。記事を読んで、主題についてのビデオを見ることをお勧めします。
上記の場合のWebブラウザのパフォーマンスを向上させる主なアイデアは、ページの変更回数を減らすことです。したがって、1つのDOM要素の5つのスタイルを変更する必要があるので、1回の操作でこれを行う必要があります。jQuery.css({...})
5つの個別の呼び出しの代わりに、変更されたすべてのスタイルで使用できます。さらに良いのは、1つのCSSクラスを定義してjQuery.addClass
メソッドを使用することです。
jqGridの場合<tbody>
、グリッドのすべての行とセルを埋める必要があります。オプションを使用gridview: true
すると、jqGridはすべての行のコンテンツをHTMLフラグメントを含む文字列として収集します。その後、内部プロパティを設定する行でjqGridを呼び出しjQuery.append
て、ページにHTMLフラグメント全体を設定します。innerHTML
同じ理由で、、またはHTMLフラグメントを処理するカスタムフォーマッターを使用する必要がありますcellattr
。rowattr
これは、セルまたは行を文字列として表します。最後に、文字列は他の文字列に追加され、jQuery.append
上記のような操作で使用されます。
コールバック関数を使用するには、コールバックを呼び出す前afterInsertRow
に、グリッドのすべての行をページに配置afterInsertRow
する必要があります。そのため、オプションの使用が不可能になりgridview: true
、ページの動作が遅くなります。
正確には、前に説明したパフォーマンスの低下は、グリッドが大きい場合にのみ表示され、低速のWebブラウザー(Internet Explorer、特に古いバージョンのIEなど)の場合にほとんど明らかになります。