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

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

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

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

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

你很接近 – 你需要通过索引引用每个Cell并返回它的Value属性:

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

等等

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

 dataGridView.SelectedDataKey.Value; 

尝试使用dgv的Item元素。

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

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

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

那么没有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是从哪里获取值的当前Row。

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

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