【问题标题】:C# how to get the selected column ID value from datagridviewC#如何从datagridview获取选定的列ID值
【发布时间】:2016-01-10 11:43:19
【问题描述】:

我有一个 DataGridView,用户可以选择列。我希望该选定列传递 ID 属性的值。我尝试了很多不同的方法,但总是返回错误。通常的错误消息 - “索引超出范围”。必须是非负数且小于集合的大小...

我尝试过的几行

int id = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value);
int id = Convert.ToInt32(dataGridView1.SelectedCells[0]);
int id = Convert.ToInt32(dataGridView1.Rows[0].Selected);

【问题讨论】:

  • 请说明您的要求。 “我希望所选列传递 ID 属性的值”- 列没有“值”。
  • 你是对的,对不起。每列的第一个单元格是我需要传递的学生的 ID
  • 我还是不明白你想要达到什么目的。我只能说可以通过DataGridView.SelectedColumns 属性访问选定的列。
  • 如果我使用SelectedColumns 如何获取第一个单元格的值?我找不到这样的选项。
  • 单元格是行和列的交集。因此,一列包含多个单元格。行也一样。你最好用一个展示用例的具体例子来更新你的问题。

标签: c# winforms datagridview


【解决方案1】:
Int id= Convert.ToInt32(dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value);

"datagridview1.CurrentRow.Index" 获取选中行的索引。

【讨论】:

  • 简单:int id = (int)dataGridView1.CurrentRow.Cells[0].Value;
【解决方案2】:

选定的列没有关于选定行的信息,因此您可以循环所有行以获取您的 ID。

foreach(DataGridViewRow dgvr in dataGridView1.Rows)
{
    int id = Convert.ToInt32(dgvr.Cells[0].Value);
}

【讨论】:

    【解决方案3】:

    该异常意味着您没有选择并且SelectedRows 集合为空。而不是 [0] 使用 FirstOrDefault.FirstOrDefault()?.

    【讨论】:

    • 我试过了,但我无法让它工作。它甚至没有提供FirstOrDefult() 选项。但是我不需要默认值。当用户选择一列时,我只需要这个 ID,然后我需要第一个单元格的值,即学生的 ID
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    相关资源
    最近更新 更多