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

1

Я использую этот DataTable как DataSource для GridView:

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

Я хочу получить значение столбца ID щелкнутой строки DataGridView, так что я должен использовать так?

private void myDataGridView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
        //??
}
Теги:
winforms
datatable
datagridview

4 ответа

1
Лучший ответ
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value
1

Прежде всего, мой ответ предполагает, что вы работаете с 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 строке DataGridView и вытаскивает ее значение поля "ID", но только при двойном щелчке строки без заголовка.

Теперь вы написали, что хотите получить идентификатор, когда нажата строка, и вы показали нам обработчик CellContentDoubleClick. Приведенный выше код будет работать при использовании CellContentDoubleClick но мне интересно, можете ли вы использовать CellDoubleClick. Разница в том, что пользователю действительно нужно щелкнуть отображаемое значение ячейки, чтобы запустить CellContentDoubleClick, но если вы используете CellContentDoubleClick пользователю нужно будет только щелкнуть в любом месте строки (включая заголовок строки), чтобы запустить событие. Это может сделать ваше приложение немного проще в использовании.

  • 0
    ой! Я был неправ в отношении DataGridView и GridView ! Я редактировал Q!
0

Пройдите следующий код:

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

вы пытаетесь это сделать?

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;
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню