Как получить данные выбранной строки из представления сетки данных с использованием SelectedRows? - PullRequest
6 голосов
/ 24 августа 2010

У меня есть таблица, которую я отображаю в элементе управления сеткой данных.Пользователь выбирает одну строку из элемента управления и нажимает кнопку.Мне нужно извлечь ячейки из этой строки и сохранить их как строки.

Как именно получить данные, используя метод SelectedRow?Я работал над этим в течение нескольких часов, и я в конце своей веревки.Вот пример того, что я пробовал:

DataGridViewCellCollection selRowData = dataGridView1.SelectedRows[0].Cells;

Если я пытаюсь получить доступ к selRowData [x], возвращаемое значение не содержит моих данных.

Ответы [ 5 ]

7 голосов
/ 24 августа 2010

Вы близки - вам нужно сослаться на каждый Cell через его индекс и вернуть его Value свойство:

string firstCellValue = dataGridView1.SelectedRows[0].Cells[0].Value;
string secondCellValue = dataGridView1.SelectedRows[0].Cells[1].Value;

и т.д.

2 голосов
/ 14 июля 2015

Если вы хотите, чтобы данные и данные, вероятно, были связаны с источником данных, я мог бы предложить вам получить ключ из выбора, а затем использовать его для доступа к данным любым удобным вам способом:

dataGridView.SelectedDataKey.Value;
1 голос
/ 05 апреля 2015

Ну, нет свойства элемента datagridview .. @ Решение Jay Riggs лучше ... Следующее решение также работает:

string firstCellValue = dataGridView1[0,dataGridView1.CurrentRow.Index].Value.ToString();
string secondCellValue = dataGridView1[0,dataGridView1.CurrentRow.Index].Value.ToString();

Здесь 0 - первый столбец, а dataGridView1.CurrentRow.Index - текущийСтрока, откуда взять значение.

1 голос
/ 24 августа 2010

Попробуйте использовать элемент Item в dgv.

dgvFoo.Item(0, dgvFoo.CurrentRow.Index).Value

Это вернуло бы значение первого элемента. Вы можете поместить это в цикл for, чтобы получить их все.

Другой вариант - использовать коллекцию SelectedRows для объекта и выполнять итерацию по каждой выбранной строке (или только по одной в вашем случае).

0 голосов
/ 17 ноября 2017

Возможно, это более подходящее решение, используйте значения ячеек в строке щелчка:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
  if (e.RowIndex > -1)
  {
    var val = this.dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...