DataGridViewを使った検索データの表示と削除 [DataGridView]
----------------------------------------------------------
(開発・実行環境)
Microsoft Visual Studio 2005 Tools for Applications
Microsoft Visual Basic 2005
----------------------------------------------------------
(課題)
DataGridViewにDBの検索結果を表示する。
また、それをクリアする。
(解決法)
DB内の検索データをDataGridViewに表示する際、
DataSourceを使わずに行なった。
DataSourceを当ててる場合は、DataSourceをClearか何か
すれば良いらしいけど。
表示は、検索結果の入ったDataSetを一度配列に入れて、
その配列内のデータを行毎にDataGridViewに流す。
(配列はDataGridViewのColumn数を要素数とする)
これを行数回分まわす。
(グリッドのColumu数が検索結果の列の数と違う場合は1列ずつ入れました。。)
削除する場合は一気にClearできなかったので、
行数を数えて、その回数分行削除処理をまわす。
ちなみにこのとき使ったメソッドは、
「DataGridView.Rows.RemoveAt()」。
DataGridView.Rows.Remove()じゃダメやった。。
行を”コレクション”から削除するメソッドなんだけど、
うまく全行消えてくれず。。。
たぶん、消した分だけコレクションが変化した(行数が減った)からだと思うけど。。
(しかし、コレクションってなんかいまいちピンとこん。。。)
ちなみに以下が”上手くいかなかった”ソース。。
(p_GrdはDataGridViewのオブジェクト)
'グリッドの行数の取得
Dim rowCnt As Integer = p_Grd.Rows.Count
行の削除()
For Each row As DataGridViewRow In p_Grd.Rows
If row.Cells(0).Value.ToString IsNot Nothing Then
p_Grd.Rows.Remove(row)
End If
Next
行の位置を指定して削除する「RemoveAt()」メソッドを使いましたとさ。
ちなみにグリッドデータを削除する場合は下から(行番号の大きい方から)消すよう注意!
消してったら行数減ってくからね。
コメント 0