- - PR -
DataGrid内のCheckBoxをチェックした行を更新したい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 ] |
|
投稿日時: 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-10-22 11:27
いつもお世話になっております。
早速教えていただいた方法を試してみたところ うまくいきました! p2.Value = CType(MyCheckBox.Parent.Parent, DataGridItem).Cells(5).Text このような方法があるとは全く知りませんでした。 どうもありがとうございました! |
1