【VB.NET】DataGridViewコントロールのボタンがクリックされた行の値を取得するには?

訪問して頂きありがとうございます。まさふくろーです。

この記事では、DataGridViewコントロールのボタンがクリックされた行の値を取得する方法をご紹介します。

DataGridViewコントロールのボタンがクリックされた行の値を取得する

  • DataGridViewコントロールのセルがクリックされたときに動くイベントは、「CellContentClick」イベントです。
  • ボタンがクリックされたか判断するには、DataGridViewCellEventArgs.ColumnIndexプロパティを使います。
  • DataGridViewCellEventArgs.ColumnIndexプロパティは、イベントが発生したセルの列インデックスを示す値を取得します。
  • 例えば、ボタンの位置が1列目に配置されている場合は、DataGridViewCellEventArgs.ColumnIndex = 0という条件にすることにより、ボタンがクリックされたと判断できます。
  • また、何行目がクリックされたかを取得するには、DataGridViewCellEventArgs.RowIndexプロパティを使います。

  • DataGridViewコントロールのすべての行の値を取得するには、DataGridViewRowオブジェクトのRowsプロパティを使います。
  • 各セルの値を取得するには、DataGridViewCellオブジェクトのValueプロパティを使います。
  • DataGridViewCellオブジェクトは、DataGridViewRowオブジェクトのCellsプロパティから取得します。
  • これらを踏まえて、DataGridViewコントロールでクリックした行の各列の値を取得する書式は、以下になります。

DataGridView.Rows(DataGridViewCellEventArgs.RowIndex).Cells(列のインデックス).Value

  • 列のインデックスは、DataGridViewコントロールの左から順番に「0、1、2・・・」と割り振られます。

サンプルプログラム

DataGridViewに表示する処理

2 「注文データを表示」ボタンクリック時に以下処理を行う。
4~7 接続先データベースの情報を、変数に代入。
13 SqlConnectionクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
15~19 ConnectionStringプロパティにデータベース情報を設定。
21 データベースに接続。
23 SqlCommandクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
25 SQL文を実行するために、15~19行目で設定したデータベース情報と同じ情報をConnection プロパティに設定。
27~31
レコードを抽出するSQL文をCommandTextプロパティに設定。
30行目の「@」マークは、以下33~34行目で設定するパラメータを使用する際に記述します。
33 「SalesOrderHeader」テーブルの「SalesOrderID」列の開始番号に、値「71774」を設定する。
34 「SalesOrderHeader」テーブルの「SalesOrderID」列の終了番号に、値「71816」を設定する。
36 SQL文(SalesOrderID列の値が71774~71816までのレコードを抽出する)を実行し、実行結果をSqlDataReader型の変数「dread」に代入。
38 変数「dread」の値が「True」の間(抽出したレコード件数分)、以下処理を繰り返す。
43 「SalesOrderID」列の列番号を取得し、Integer型の変数「iIdx」に代入。
44 「SalesOrderID」列の値を取得し、String型の変数「SalesOrder_ID」に代入。
46 「OrderDate」列の列番号を取得し、Integer型の変数「iIdx」に代入。
47 「OrderDate」列の値を取得し、String型の変数「Order_Date」に代入。
49 「DueDate」列の列番号を取得し、Integer型の変数「iIdx」に代入。
50 「DueDate」列の値を取得し、String型の変数「Due_Date」に代入。
52 「SalesOrderNumber」列の列番号を取得し、Integer型の変数「iIdx」に代入。
53 「SalesOrderNumber」列の値を取得し、String型の変数「SalesOrder_Number」に代入。
55 DataGridViewコントロールにデータを表示する。(ボタンにはデータを表示しないので「Empty値」を設定)
61 DataGridViewコントロールの1列目(ボタン)の幅を50ピクセルにする。
63 処理が正常に終了したら、正常終了のメッセージをラベルに表示する。
67 処理の実行中にエラーが発生した場合、
69 エラー内容を取得し、ラベルに表示する。

DataGridViewのボタンがクリックされたときの処理

2 DataGridViewコントロールのセルがクリックされた時に以下処理を行う。
4 クリックされたセルの列インデックスを取得し、Integer型の変数「ColIndex」に代入
5 クリックされたセルの行インデックスを取得し、Integer型の変数「RowIndex」に代入
10 クリックされたセルの列インデックスが「0」の場合(ボタンがクリックされた場合)以下処理を行う。
12 クリックされた行の2列目(注文No)から値を取得し、String型の変数「SalesOrder_ID」に代入。
13 クリックされた行の3列目(注文日)から値を取得し、String型の変数「Order_Date」に代入。
14 クリックされた行の4列目(納期)から値を取得し、String型の変数「Due_Date」に代入。
15 クリックされた行の5列目(製品No)から値を取得し、String型の変数「SalesOrder_Number」に代入。
17~21 上記12~15行目で取得した値をラベルに表示する。
25 処理の実行中にエラーが発生した場合、
27 エラー内容を取得し、ラベルに表示する。

関連記事

DataGridViewコントロールにボタンを表示する

【VB.NET】DataGridViewコントロールにボタンを表示するには?

DataGridViewコントロールの列の幅を変更する

【VB.NET】DataGridViewコントロールの列の幅を変更するには?

DataGridViewコントロールにデータを表示する

【VB.NET】DataGridViewコントロールにデータを表示するには?

テーブルのデータを抽出する

【VB.NET】テーブルのレコードを抽出するには?

データベースに接続

【VB.NET】データベースに接続するには?

Usingステートメント

【VB.NET】UsingステートメントでDisposeメソッドの呼び出しを自動化する

構造化例外処理

【VB.NET】構造化例外処理とは?

最後まで読んでいただき、ありがとうございました!

本のまとめ関連記事はこちら