如何使用SelectedRows从数据网格视图中获取选定的行数据?

时间:2010-08-23 23:35:50

标签: c# .net datagridview

我有一个表,我正在数据网格视图控件中显示。用户从控件中选择一行并按下按钮。我需要从该行检索单元格并将它们存储为字符串。

究竟如何使用SelectedRow方法获取数据?我已经在这个工作了好几个小时,我就在绳子的尽头。这是我尝试过的一个例子:

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

如果我尝试访问selRowData [x],则返回值不包含我的数据。

5 个答案:

答案 0 :(得分:7)

您已接近 - 您需要通过其索引引用每个Cell并返回其Value属性:

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

答案 1 :(得分:2)

如果您希望数据和数据可能绑定到数据源,那么我可以建议您从选择中获取密钥,然后您可以使用它来以任何方式访问数据:

dataGridView.SelectedDataKey.Value;

答案 2 :(得分:1)

尝试使用dgv的Item元素。

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

这将返回第一个项目的值。您可以将其放入for循环中以获取所有内容。

另一种选择是在对象上使用SelectedRows集合并遍历每个选定的行(或者只是你的情况中的那一行)。

答案 3 :(得分:1)

那么没有datagridview Item属性.. @ Jay Riggs解决方案更好......以下解决方案也有效:

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

这里0是第一列,dataGridView1.CurrentRow.Index是从中获取值的当前行。

答案 4 :(得分:0)

也许这是一个更合适的解决方案,使用单击行的单元格值:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
  if (e.RowIndex > -1)
  {
    var val = this.dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
  }
}