【C#】DataBindingSourceを使用したGrid表示処理が遅い場合

これで100%改善される訳ではないけど、ケースによっては絶大な改善に繋がるので一応メモ。

該当するケース

前提条件

  • DataGridViewまたはListBoxなどのコントロールのDataSourceプロパティに、sampleBindingSourceが割り当たっている
  • sampleBindingSourceDataSourceプロパティには、databaseDataSetが割り当たっている
  • databaseDataSetは、SAMPLEテーブルを持っている

修正前

// グリッドへデータをバインド
this.sampleTableAdapter.Fill(this.databaseDataSet.SAMPLE);

// キーコードでフィルタリング
this.sampleBindingSource.Filter = "KEY_CODE='" + this.keyCode + "'";

修正後

// キーコードでフィルタリング
this.sampleBindingSource.Filter = "KEY_CODE='" + this.keyCode + "'";

// グリッドへデータをバインド
this.sampleTableAdapter.Fill(this.databaseDataSet.SAMPLE);

バインドしてからフィルタリングしてたのを、フィルタリングしてからバインドするように変えただけ。

これでビビるぐらい早くなったことがあったので、上記のようになってる場合は要注意。

投稿者: Output48

中学生の時に初めてHTMLに触れてからホームページ制作を独学で始める。 ベンチャー企業の営業、大手企業のPG・SEを経て、独立。 現在はとある企業のCTOと、変な名前の会社の社長をしてる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください