07-20-2011, 02:27 PM,
|
|||||
|
|||||
RecordGridの縦スクロールが遅いんですが…
何か良い知恵はないでしょうか。
当方、RecordGridを使用してデータを一覧表示しているのですが、 レコードの件数自体は100件~200件程度なんですが、列数が200列くらいあります。 恐らくこの200列がいけないような気がするんですが… なぜ縦スクロールが遅くなるのか、改善方法を御存知の方は 御教示頂ければと思います。 宜しく御願いします。 |
|||||
07-27-2011, 08:43 AM,
|
|||||
|
|||||
RE: RecordGridの縦スクロールが遅いんですが…
行の方は表示部分のみ作成描画しているのに対し、列は見えない部分まで作って保持してるみたいですね。
それで遅いんじゃないでしょうか。 改善方法は、やはり列を減らすとか…。 |
|||||
07-27-2011, 10:46 AM,
|
|||||
|
|||||
RE: RecordGridの縦スクロールが遅いんですが…
yosuga様、返信有り難う御座います。
当方でも調べたことを後進のために記述しておきます。 yosuga様の言うように、RecordGridは表示されていない【行】については グラフィカルなオブジェクトとしては保持していないようです。 表示されている行で、見えていない【列】(横スクロールすれば見える列)に関しては オブジェクトとして保持されているようです。 ここで言う、グラフィカルなオブジェクトとは、RecordGridCellのことを意味し、 RecordGridCellにRecordSetの持つレコードのデータを適切にひもづけ 表示しています。 では、RecordGridがスクロールされ、今まで表示されていなかった行が 表示されるようになった際は、いままで表示されていたデータのひもづけを外し、 RecordGridCellが使い回しされ、表示されることとなったレコードにひもづけを 行い、再度データを表示しています。 このRecordGridCellオブジェクトの使い回しによって、大量のレコード数が合ったとしても 表示されているレコード数分しかRecordGridCellオブジェクトは作成されず、 メモリの使用を抑えているということになります。 また、当方ではRecordGridCellを継承してカスタマイズされたセルを使用しています。 その中のrefresh-dataメソッドをオーバーライドして処理を行っています。 このRecordGridCell.refresh-dataメソッドは、上記のRecordGridがスクロールされる際などに 表示するレコードのひもづけ、データの表示を行うメソッドです。 つまり、スクロールした際は、RecordGridが保持しているRecordGridCellの数分refresh-dataメソッドが 実行されます。 今回の場合、レコード数はそこまで大量ではないのですが、列数が多くあるため、 見えていない列のRecordGridCellオブジェクトも保持しており、 その分だけ、RecordGridCellのrefresh-dataメソッドが多く実行されます。 また、refresh-dataメソッドのオーバーライドして追加した処理も実行されるため、 その分もパフォーマンスに影響を与えたようです。 現状のRecordGridの仕様はこのようなので、やはり、yosuga様の言うように列数を減らすのが 一番良い方法のように思えます。 有り難う御座いました。 |
|||||
« Next Oldest | Next Newest »
|
Users browsing this thread:
3 Guest(s)
3 Guest(s)