如何使用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(); } }