いつもどこかでデスマーチ♪

不定期に、私の日常を書き込みしていきます。

DataGridViewには注意が必要

2012年06月28日 16時01分13秒 | .NET系
今日、上がって来た不具合の原因…?がコレでした。

http://yiaowang.web.fc2.com/programing/vs_base/research_datatable_02.html
(404やん!orz)


私の場合は、DataGridViewの1行目のデータのみ、反映されませんでした。
2行目以降は DataGridView の値が正しくバインドされた、DataTableに反映されました。

なぜに1行目だけ反映されないのだっ!
いじめです…

ってか、コレって .Net Framework のバグだと思うんですが…



さて、上記URLでは、

・DataGridView に対して値を設定しない。
・DataTable.Copy() をする前には必ず DataTable.AcceptChanges() をする。

と記述がありますが、第3の私なりの修正方法です。

Dim tmp As DataGridViewCell = dataGridView.CurrentCell     ' カレントセルを保持
dataGridView.CurrentCell = dataGridView.Rows(0).Cells(0)  ' 値を変更するセルをカレントセルに設定
dataGridView.BeginEdit(True)                                 ' 編集開始
dataGridView.Rows(0).Cells(0).Value = "aaa"                ' 値を格納
dataGridView.EndEdit()                                        ' 編集終了
dataGridView.CurrentCell = tmp                               ' カレントセルを戻す


です。カレントセルが移動して良い人は、必要ないかも知れません。

私の環境では動きました。
ただ、重そうです…ループすると重そうです。全セル対応すると重そうです。
で、実験の結果、1行目だけ反映されないので、rows(0)の時だけこの処理をするようにしました。

場当たり的な対応で嫌いです。
誰かもっと良い方法を教えて。
(個人的にはDataGridViewの作成時の設定に問題がありそうな気がする…)

へるぷみー


検索用:
DataGirdView DataTable copy() DataTable.copy()
値が変わる 値が違う 値がコピーされない 正しくコピーされない

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« mapserrver と連携する為にGo... | トップ | DataGridView を 1クリックで... »

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

.NET系」カテゴリの最新記事