- PR -

DataGrid内のCheckBoxをチェックした行を更新したい

1
投稿者投稿内容
やんもり
会議室デビュー日: 2003/07/04
投稿数: 13
投稿日時: 2003-10-20 11:07
いつもお世話になっております。

VB.NETにてDataGrid内にCheckBoxが入った
アプリケーションを製作しています。

CheckBoxの値(True/False)は、DBの値をバインドして
一覧表示しているのですが、このCheckBoxの値が
変更されたら、その情報をDBに更新させたいと
考えております。

CheckBoxは、DataGridのテンプレート列で作り、
CheckBoxがチェックされたときのイベントは、
OnCheckedChangedイベントで取得できるようになったのですが、
(過去ログ
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=4505&forum=7
を参考にさせていただきました。)

どの行がチェックされたのかという情報を渡せません。

具体的には、OnCheckedChangedイベント用のサブルーチンを
Sub OnCheck(ByVal sender As Object, ByVal e As System.EventArgs)
Dim MyCheckBox As CheckBox
MyCheckBox = CType(sender, CheckBox)

Dim cn As New SqlConnection("接続文字列")
Dim cmd As New SqlCommand("更新SQL文", cn)
Dim p1 As SqlParameter = cmd.Parameters.Add("@para1", SqlDbType.Bit)
Dim p2 As SqlParameter = cmd.Parameters.Add("@para2", SqlDbType.Int)

p1.Value = MyCheckBox.Checked 'チェックされた値(True/False)
p2.Value = DataGrid1.SelectedItem.Cells(5).Text '行ID

cn.Open()
cmd.ExecuteNonQuery()
cn.Close()

End Sub

として、値を渡そうとしているのですが、
「オブジェクト参照がオブジェクト インスタンスに設定されていません」
というエラーが発生します。

DataGridに選択ボタンを追加して、更新したい行を選択してからだと
うまくいくのですが、CheckBoxをチェックするだけで現在選択されて
いる行を取り出すことはできないでしょうか?

どなたかお知恵をお貸しいただければ幸いです。


[ メッセージ編集済み 編集者: やんもり 編集日時 2003-10-20 11:11 ]
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-10-21 23:38
> p1.Value = MyCheckBox.Checked 'チェックされた値(True/False)
> p2.Value = DataGrid1.SelectedItem.Cells(5).Text '行ID
でなくて
CType(MyCheckBox.Parent.Parent, DataGridItem).Cells(5).Text
とすればよいかと。
オブジェクトは階層構造になってますからいろいろ試してみてください。
やんもり
会議室デビュー日: 2003/07/04
投稿数: 13
投稿日時: 2003-10-22 11:27
いつもお世話になっております。

早速教えていただいた方法を試してみたところ
うまくいきました!
p2.Value = CType(MyCheckBox.Parent.Parent, DataGridItem).Cells(5).Text

このような方法があるとは全く知りませんでした。
どうもありがとうございました!
1

スキルアップ/キャリアアップ(JOB@IT)