我有一个表格,正在数据网格视图控件中显示。用户从控件中选择单个行并按下按钮。我需要检索该行的单元格并将它们存储为字符串。
使用SelectedRow方法如何准确获取数据?我已经花费了几个小时在这个问题上,现在已经无法继续了。以下是我尝试过的示例:
DataGridViewCellCollection selRowData = dataGridView1.SelectedRows[0].Cells;
如果我尝试访问selRowData[x],返回的值不包含我的数据。
我有一个表格,正在数据网格视图控件中显示。用户从控件中选择单个行并按下按钮。我需要检索该行的单元格并将它们存储为字符串。
使用SelectedRow方法如何准确获取数据?我已经花费了几个小时在这个问题上,现在已经无法继续了。以下是我尝试过的示例:
DataGridViewCellCollection selRowData = dataGridView1.SelectedRows[0].Cells;
你已经接近了 - 你需要通过索引引用每个 Cell
并返回它的 Value
属性:
string firstCellValue = dataGridView1.SelectedRows[0].Cells[0].Value;
string secondCellValue = dataGridView1.SelectedRows[0].Cells[1].Value;
etc.
如果您需要获取数据,且该数据很可能与数据源相关联,则我建议您从选择中获取键,然后可以使用该键以任何您喜欢的方式访问数据:
dataGridView.SelectedDataKey.Value;
好的,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是当前行来获取值。
dgvFoo.Item(0, dgvFoo.CurrentRow.Index).Value
这将返回第一个项目的值。您可以将其放入for循环中以获取所有项目。
另一种选择是使用对象上的SelectedRows集合,并迭代每个选定的行(或仅在您的情况下选择一个行)。
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex > -1)
{
var val = this.dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
}
}