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

6

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

使用SelectedRow方法如何准确获取数据?我已经花费了几个小时在这个问题上,现在已经无法继续了。以下是我尝试过的示例:

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

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

答案在这里遍历所有单元格来构建文本字符串。 - ZMan
5个回答

6

你已经接近了 - 你需要通过索引引用每个 Cell 并返回它的 Value 属性:

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

etc.


2

如果您需要获取数据,且该数据很可能与数据源相关联,则我建议您从选择中获取键,然后可以使用该键以任何您喜欢的方式访问数据:

dataGridView.SelectedDataKey.Value;

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是当前行来获取值。


1
尝试使用dgv的Item元素。
dgvFoo.Item(0, dgvFoo.CurrentRow.Index).Value

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

另一种选择是使用对象上的SelectedRows集合,并迭代每个选定的行(或仅在您的情况下选择一个行)。


0
也许这是一个更合适的解决方案,使用单击行的单元格值:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
  if (e.RowIndex > -1)
  {
    var val = this.dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接