如何获取DataGridView中所选行的给定列的值?

时间:2014-10-05 04:17:10

标签: c# datagridview datagridviewcolumn

知道要查询的列的名称,如何从DataGridView中当前选定记录的该列中提取值?

IOW,如果我有一个名为id,Date,Time,Space的列的DataGridView,并且我想要当前所选行的Space列的值,我该如何将该值赋给String变量?

在伪代码中,我希望它类似于:

String s = dataGridView1.CurrentRow["Space"].ToString();

......但我确定它并不是那么简单。

更新

答案看起来不错,但是有没有办法从当前行获取不响应dataGridView事件的值?我需要将值与被点击的dataGridView或任何其他事件分开。 IOW:有没有办法获得当前行?

4 个答案:

答案 0 :(得分:1)

Grid_RowDataBound事件中

    protected void Grid_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.DataItem == null)
            return;

        DataRowView row = e.Row.DataItem as DataRowView;

        if(row["Space"] != null)
        {
            string s = row["Space"].ToString();
            //do stuff
        }

    }

答案 1 :(得分:1)

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)
    {
       string s = dataGridView1.Rows[e.RowIndex].Cells["Space"].Value.ToString();
    }
}

答案 2 :(得分:1)

您可以使用

dataGridView1.CurrentRow.Cells[yourColumn] 

如果有当前行,则访问当前行 ..即使你打开MultiSelect,也可以随时使用

dataGridView1.SelectedRows[0].Cells[yourColumn] 

访问第一个选定的行..

答案 3 :(得分:0)

我认为这样可行:

private string GetCurrentOrFirstValOfColumn(string colName)
{
    String colVal = String.Empty;
    DataGridViewRow dgvr = dataGridViewFileContents.CurrentRow;
    if (null != dgvr.Cells[colName].Value)
    {
        colVal = dgvr.Cells[colName].Value.ToString();
    }
    return colVal;
}