VB.NETのDataGridでカレント行を取得するには?

解決


入門者さん  2003-03-06 04:09:31  No: 106193

こんにちは。
VB.NETを使ってWindowsアプリケーションを開発しています。

DataGridコントロールを配置し、OleDbDataAdapterでMDBファイルに接続してDataGridコントロールにButtonとして表示しているのですが、カレント行となっている部分の値を取得する方法がわかりません。

たしかVB6.0ではFlexGridの.Rowや.Colを使ってできたと思うのですが、.NETではできませんでした。
VB自体入門者のため、あまり詳しいことはわかりません。
何かヒントになるようなことを教えてください。


Y2  2003-03-06 05:55:05  No: 106194

DataTable.Rows(DataGrid1.CurrentRowIndex).Item(列のインデックスか名前)
という感じでデータを取得または設定できたと思います。

もし、DataTableが獲得できていなければ
CType(DataGrid1.DataSource, DataSet).Tables(?)
で獲得してください。


入門者さん  2003-03-06 19:42:15  No: 106195

Y2さん、ありがとうございます。
.NETを最近使い始めたばかりで実はよくわからないことが多いのですが
以下のVB6.0で作られたソースを.NETでアレンジするとどういう記述になるか教えていただけませんか?

Private Sub Command6_Click()
    With MSFlexGrid1

        MsgBox "カレントセルは" & .Row & "行目の" & .Col & "列目です"

        MsgBox "カレントセルを3行目の5列目に設定します"
        'カレントセルの設定(3行目の5列目に)
        .Row = 3
        .Col = 5

    End With
End Sub


Y2  2003-03-07 04:44:13  No: 106196

MSFlexGridは使ったことがないので申し訳ないのですが、多分、↓のような方法で大丈夫だと思います。

<カレント行のインデックスを獲得>
= DataGrid1.CurrentRowIndex
もしくは
= DataGrid1.CurrentCell.RowNumber

<カレント列のインデックスを獲得>
= DataGrid1.CurrentCell.ColumnNumber

<カレントセルの内容を獲得>
= DataTable1.Rows("カレント行").Item("カレント列")

<指定したセルの内容を設定>
DataTable1.Rows(3).Item(5) =

↑のDataTable1というのは、DataGrid1に設定されているDataSetに設定されているDataTableのことです。
DataTableを作成してからDataGrid1.SetDataBindinで設定する方法しか自分は知らないのですが、

もし、DataGrid1に含まれているDataTableが不明であれば、↓で獲得してください。
= CType(DataGrid1.DataSource, DataSet).Tables("テーブル名前、もしくはIndex")
これは、DataGrid1に設定されているDataSetの中に含まれているDataTableを獲得しているのですが、DataTableが一つしか含まれていない場合はIndexの部分を0にすれば獲得できると思います。
それと、CTypeを使っている理由は、DataGrid1.DataSorceはObject型で値が返ってくるので、プログラマーがそのオブジェクトがDataSetだと分かっていてもプログラムはそれが何なのか分からないので、それがDataSetであることを表してあげています。
なので、CTypeはとっても動作すると思います。

<カレント行を移動・設定>
DataGrid1.CurrentRowIndex = 3

<カレント列を移動・設定>
分かりません。
自分用のCSV編集アプリケーションを作るときにヘルプを読んだだけなので、分からないです、すみません。


入門者さん  2003-03-10 23:22:19  No: 106197

Y2様、返信遅れて申し訳ありません。
アドバイスを元になんとか思い通りの処理ができました。
大変参考になりました。ありがとうございました。

以下コード
=====================================================================
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        With DataGrid1

            MsgBox("カレントセルは" & DataGrid1.CurrentCell.RowNumber & "行目の" & DataGrid1.CurrentCell.ColumnNumber & "列目です")

        End With
    End Sub
=====================================================================


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加