DataGridViewで現在選択している行の値を取得する - C#
DataGridViewで現在選択している行の値を取得するコードを紹介します。
解説
DataGridViewでは"CurrentRow"プロパティにより現在の行を取得できます。行内のセルにはCellsプロパティでアクセスします。
例1
dataGridView1の選択されている行の一番左の列の値は下記のコードで取得できます。
dataGridView1.CurrentRow.Cells[0].Value;
例2
dataGridView1の選択されている行のColumnのnameが
idDataGridViewColumn
の列の値は下記のコードで取得できます。
dataGridView1.CurrentRow.Cells["idDataGridViewColumn"].Value;
コード例
Buttonを押すとdataGridView1の現在の行の一番左の列の値をテキストボックスに表示します。
private void button_Click(object sender, EventArgs e)
{
int id = (int)dataGridView1.CurrentRow.Cells[0].Value;
textBox.Text = Convert.ToString(id);
}
プログラム例
プロジェクトの作成とデータセットの作成
.NETのWindows Formアプリケーションプロジェクトを作成します。
プロジェクト作成後、データベースを参照するデータセットを作成します。
作成手順の詳細は
こちらの記事を参照してください。
UI
下図のフォームを作成します。
コード
以下のコードを記述します。button1のClickイベントを実装します。
using System.Net.Http.Headers;
using System.Xml.Linq;
namespace DataGridViewGetCurrentRow
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void FormMain_Load(object sender, EventArgs e)
{
productsTableAdapter1.Fill(iPentecSandboxDataSet1.Products);
}
private void button1_Click(object sender, EventArgs e)
{
int id = (int)dataGridView1.CurrentRow.Cells[0].Value;
string name = (string)dataGridView1.CurrentRow.Cells[1].Value;
decimal price = (decimal)dataGridView1.CurrentRow.Cells[2].Value;
string category = (string)dataGridView1.CurrentRow.Cells[3].Value;
textBox1.Text = Convert.ToString(id);
textBox2.Text = name.Trim();
textBox3.Text = Convert.ToString(price);
textBox4.Text = category.Trim();
}
}
}
解説
dataGridView1.CurrentRow.Cells[0].Value
で現在選択しているDataGridViewの一番左のカラムの値が取得できます。
同様に
dataGridView1.CurrentRow.Cells[1].Value
で2番目のカラム、
dataGridView1.CurrentRow.Cells[2].Value
で3番目のカラムの値が取得できます。
int id = (int)dataGridView1.CurrentRow.Cells[0].Value;
string name = (string)dataGridView1.CurrentRow.Cells[1].Value;
decimal price = (decimal)dataGridView1.CurrentRow.Cells[2].Value;
string category = (string)dataGridView1.CurrentRow.Cells[3].Value;
取得した値をテキストボックスに表示します。
textBox1.Text = Convert.ToString(id);
textBox2.Text = name.Trim();
textBox3.Text = Convert.ToString(price);
textBox4.Text = category.Trim();
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
値を取得したい行をクリックしてカーソルが移動したことを確認します。
[button1]をクリックします。テキストボックスに現在の行のフィールドの値が表示されます。
列名で取得する場合
列名で取得する場合は以下のコードとなります。
private void button1_Click(object sender, EventArgs e)
{
int id = (int)dataGridView1.CurrentRow.Cells["idDataGridViewTextBoxColumn"].Value;
string name = (string)dataGridView1.CurrentRow.Cells["nameDataGridViewTextBoxColumn"].Value;
decimal price = (decimal)dataGridView1.CurrentRow.Cells["priceDataGridViewTextBoxColumn"].Value;
string category = (string)dataGridView1.CurrentRow.Cells["categoryDataGridViewTextBoxColumn"].Value;
textBox1.Text = Convert.ToString(id);
textBox2.Text = name.Trim();
textBox3.Text = Convert.ToString(price);
textBox4.Text = category.Trim();
}
指定する列名を確認します。DataGridViewコントロールのColumnプロパティのダイアログを開きます。
ダイアログの左側のリストで列名を選択します。右側のプロパティ一覧のnameプロパティの値が指定する列名になります。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2012-09-09
改訂日: 2024-09-03