如何获得DataGridView双击行的第一列值

本文关键字:一列 DataGridView 何获得 双击 | 更新日期: 2023-09-27 18:04:48

我使用这个DataTable作为GridViewDataSource:

var table = new DataTable();
table.Columns.Add("ID");
table.Columns.Add("Title");
table.Columns.Add("Subject");
...  //filling DataTable
myDataGridView.DataSource=table;

我想获得DataGridView的点击行ID列值,所以我应该这样使用什么?

private void myDataGridView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
        //??
}

如何获得DataGridView双击行的第一列值

dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value

首先,我的回答假设您正在使用DataGridView,即使您写(并标记)您正在使用GridView

这是你想要的代码:

if (e.RowIndex >= 0) {
    var row = myGridView.Rows[e.RowIndex].DataBoundItem as DataRowView;
    if (row != null) {
        string id = row["ID"].ToString();
    }
}

此代码仅将DataRowView绑定到已单击的DataGridView行并提取其"ID"字段值,但仅在双击非标题行时。

现在您写了希望在单击行时获得ID,并向我们展示了CellContentDoubleClick处理程序。上面的代码在使用CellContentDoubleClick时可以工作,但我想知道您是否更愿意使用CellDoubleClick。不同之处在于,用户实际上必须单击单元格的显示值才能触发CellContentDoubleClick,但如果使用CellContentDoubleClick,用户只需单击行上的任何位置(包括行标头)即可触发事件。这会让你的应用更容易使用。

你想这么做吗

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        int y = e.RowIndex;
        int x = e.ColumnIndex;
    }
    private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
    {
        int y1 = e.RowIndex;
        int x1 = e.ColumnIndex;
    }

检查以下代码:

GridViewRow gvrow = (GridViewRow)((ImageButton)e.CommandSource).NamingContainer;
string columnvalue= gvrow.Cells[0].Text;