我有一个表,我正在数据网格视图控件中显示。用户从控件中选择一行并按下按钮。我需要从该行检索单元格并将它们存储为字符串。
究竟如何使用SelectedRow方法获取数据?我已经在这个工作了好几个小时,我就在绳子的尽头。这是我尝试过的一个例子:
DataGridViewCellCollection selRowData = dataGridView1.SelectedRows[0].Cells;
如果我尝试访问selRowData [x],则返回值不包含我的数据。
答案 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();
}
}