daluluのブログ

daluluのブログ

ブログの説明を入力します。

Amebaでブログを始めよう!
.Net FrameworkではDBから取得したデータはDataTableに格納し、
それをコントロールにバインド(DataSourceを使用)すれば表示されるので
非常に便利。

DataGridViewのような表形式コントロールはSQL クエリの情報を
そのまま表示できるので、一覧表を作成する時は重宝する。

ところがこの際、速度の問題が出る。
おおよそ2000件を過ぎたくらいからバインド処理に時間がかかり
一呼吸も二呼吸もおいてから表示されるようになる。

最初は表示のために内部でコントロールを生成するなどで
時間がかかるんだろうなと思っていたけど、
実は余分な処理までされていたことが判明。


データをバインドする際、データの長さ(文字列のLenght)を取得して
自動でカラムの幅を設定されているのだ。

なので、
DataGridViewの場合、AutoSizeToAllHeadersを無効にする
FlexGridの場合はAutoResizeを無効にする

これで速度は幾らか向上する。

サイズを厳密に指定する際は、バインド後に
自分で行う方が早い。