
dataTblには1000件程度のデータが保存されています。
Select()で300件程度を検索して、ヒットした対象のデータの一部を変更しています。
以下がサンプルコード(モディファイしてあります。)です。
DataRow[] hitRow;
hitRow = dataTbl.Select(str);
for (int i = 0; i < hitRow.Length; i++)
{
hitRow[i][5] = "ABC"; <=== ここが遅い!!
}
Select()は頻繁に行うわけでもなく、遅いとは思っていないのですが、for文の中身で非常に時間が掛ってしまいます。約10秒程度掛ります。
これを高速化したいと考えているのですが、何か良い手はないでしょうか?
No.1ベストアンサー
- 回答日時:
データバインドしていませんか?
BindingSource のバインドを止める → SuspendBinding / ResumeBinding
コントロールの表示を止める → SuspendLayout/ResumeLayout
ありがとうございます。
SuspendBindingは気になっていたので、それ自体は止めていました。
私の質問にも問題があったのですが、上位でDataGridViewによる表示をおこなっておりました。
その結果、dataTableを変更することで、DataGridView側の表示フォーマットを変更するロジックが走ってしまっていたようです。
そういう意味では、SuspendLayoutを実施して表示を止めるようしてみたのですが、あまり効果は得られませんでした。
方向性として正しいと判断し、原因を追及したところ、Dataが更新されるたびに、DataGridView側のセルの各縦横幅を調整しに行っていたようです。
AutoSizeColumsModeおよびAutoSizeRowsModeがAllCellsになっていたことが原因でした。
これらの設定を、Noneにすると格段に速くなったのですが、表示状態が以前(AllCells)の時と比べ、異なってしまいました。
そこで、DisplayedCellsにすることで、表示上も支障なく速度の向上を得られることに成功しました。
方向性を与えて頂いてありがとう御座います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
大量のデータを読み込んで表示する速度を改善したい
C言語・C++・C#
-
C# dataGridViewの値だけクリア
C言語・C++・C#
-
C# DataGridViewで複数選択したセルに同じ値を一括で入力するには
C言語・C++・C#
-
-
4
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
5
DataGridViewの、選択されている行を取り出したい
Visual Basic(VBA)
-
6
DataTableから条件を満たした行を別のDatatableへコピーしたい
その他(プログラミング・Web制作)
-
7
GridViewでハイライトを使用しない方法
Visual Basic(VBA)
-
8
C# MouseHoverを何度も呼ぶには
その他(プログラミング・Web制作)
-
9
DataGridViewのヘッダー見出しのセンター寄せ
Visual Basic(VBA)
-
10
DataGrdViewに関連付けたデータの更新
C言語・C++・C#
-
11
C# DataGridView の列ヘッダーのマウス右クリックイベントにつきまして
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
ACCESSからEXCELに出力する際、...
-
カンマからスラッシュに
-
「0x00ff0000」?
-
【エクセル】測定時間がバラバ...
-
ブレーカー落ちで壊れたりしな...
-
Excel2010 VBA sortについて
-
ユーザーフォームのテキストボ...
-
マクロで同じフォルダにある画...
-
この行は既に別のテーブルに属...
-
SDカード メーカーや値段によ...
-
Accessで該当データにフラグを...
-
EXCEL2000 区切り位置指定ウィ...
-
Setステートメントをまとめて記...
-
DataGridViewのデータの引渡し...
-
リングバッファって何ですか
-
配列でデータが入っている要素...
-
ExcelVBAでデータ不一致のもの...
-
多量のSUMIF式を軽くしたい
-
VBA 空白セルを削除ではない方...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
配列でデータが入っている要素...
-
<VB>String→Object
-
二分探索の平均探索回数
-
多量のSUMIF式を軽くしたい
-
EXCELVBAでSQLserverからデータ...
-
この行は既に別のテーブルに属...
-
ユーザーフォームのテキストボ...
-
VBA 空白セルを削除ではない方...
-
特定のデータの抽出方法を教え...
-
パースとはなんですか?
-
C# ソケット通信でデータ受信時...
-
エクセルで2つの時系列のデー...
-
[C言語] コメント文字列を無視...
-
Accessで該当データにフラグを...
-
カンマからスラッシュに
-
C# でDataTableの更新を高速化...
-
アクセス2000で画像データ...
おすすめ情報