Как я могу получить значение данного столбца для выбранной строки в DataGridView?

Зная имя запрашиваемого столбца, как я могу извлечь значение из этого столбца для текущей выбранной записи в DataGridView?

IOW, если у меня есть DataGridView со столбцами с именами id, Date, Time, Space, и мне нужно значение столбца Space для текущей выбранной строки, как я могу присвоить это значение строковой переменной?

В псевдокоде я бы ожидал, что это будет что-то вроде:

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

... но я уверен, что это не так просто.

ОБНОВИТЬ

Ответы выглядят хорошо, но есть ли способ получить значение из текущей строки, которая не отвечает на событие dataGridView? Мне нужно присвоить значение отдельно от щелчка dataGridView или любого другого события. IOW: есть ли способ получить текущую строку?


person B. Clay Shannon    schedule 05.10.2014    source источник


Ответы (3)


Вы можете использовать

dataGridView1.CurrentRow.Cells[yourColumn] 

для доступа к текущей строке, если она есть.. ..и даже если у вас включен MultiSelect, вы всегда можете использовать

dataGridView1.SelectedRows[0].Cells[yourColumn] 

для доступа к первой выбранной строке..

person TaW    schedule 05.10.2014
comment
Прохладный; это более простой способ, чем моя пошаговая идея; просто String colVal = dataGridView1.CurrentRow.Cells[colName]; - person B. Clay Shannon; 05.10.2014
comment
да. Пожалуйста, проверьте документы MSDN; вы увидите, а) как установить текущую строку и б) что не может быть строки «текущей»! - person TaW; 05.10.2014

В событии 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
        }

    }
person mybirthname    schedule 05.10.2014

Я думаю, это сработает:

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;
}
person B. Clay Shannon    schedule 05.10.2014