DataGrid で複数選択した行を削除する
データグリッドでの指定行の削除の続き。前回は1行のみ削除しましたが、今回は複数行削除です。
Private gDS as System.Data.DataSet ' ちゃんと Fill していること Friend WithEvents gGrid As System.Windows.Forms.DataGrid ' ちゃんと生成してフォームに貼り付けてあること ... Dim ix As Integer Dim aDeleted As New System.Collections.ArrayList ' 削除された行番号を取得 For ix = 0 to gDS.Tables(gGrid.DataMember).Rows - 1 If gGrid.IsDeleted(ix) = True Then aDeleted.Add(ix) End If Next ' 削除実行 For Each ix In aDeleted gDS.Tables(gGrid.DataMember).Rows(ix).Delete Next
ポイントは、IsDeleted メソッドよりか、DataRow::Delete を実行すると、IsDeletedが無効になっちゃうところ。ループで IsDeleted でチェックして、すぐに削除する、という方法だと、ひとつ削除されるだけになってしまいました。