
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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
このQ&Aを見た人はこんなQ&Aも見ています
-
大量のデータを読み込んで表示する速度を改善したい
C言語・C++・C#
-
C# dataGridViewの値だけクリア
C言語・C++・C#
-
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
-
4
GridViewでハイライトを使用しない方法
Visual Basic(VBA)
-
5
DataGridViewの、選択されている行を取り出したい
Visual Basic(VBA)
-
6
C# MouseHoverを何度も呼ぶには
その他(プログラミング・Web制作)
-
7
C# DataGridViewで複数選択したセルに同じ値を一括で入力するには
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
郵便番号のことで困ってます
-
C# でDataTableの更新を高速化...
-
S9タイプからXタイプにデータ...
-
ウィンドウ枠の固定を行の2箇所...
-
CString型の文字列連結について
-
VBA 毎日取得するデータを順番...
-
メモ帳(テキストデータ)をExc...
-
配列の勉強をしています。使用...
-
ACCESS VBA インデックスが有効...
-
ACCESSからEXCELに出力する際、...
-
Matlab:plotで特定の値だけをプ...
-
配列でデータが入っている要素...
-
チェックサムの実装方法について
-
外部データの更新がうまくでき...
-
VBA HPからのデータ摘出...
-
特定のデータの抽出方法を教え...
-
VBA 判定文で理解できない結果...
-
VBA 空白セルを削除ではない方...
-
[C言語] コメント文字列を無視...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
配列でデータが入っている要素...
-
VBA 空白セルを削除ではない方...
-
メモ帳(テキストデータ)をExc...
-
EXCELVBAでSQLserverからデータ...
-
多量のSUMIF式を軽くしたい
-
この行は既に別のテーブルに属...
-
CString型の文字列連結について
-
ACCESSからEXCELに出力する際、...
-
ユーザーフォームのテキストボ...
-
エクセルで2つの時系列のデー...
-
C# でDataTableの更新を高速化...
-
特定のデータの抽出方法を教え...
-
C# ソケット通信でデータ受信時...
-
二分探索の平均探索回数
-
Excel VBAでのオートフィルター...
-
ブレーカー落ちで壊れたりしな...
-
Accessで該当データにフラグを...
-
VBAを使ってOutlookメール本文...
おすすめ情報