如何在 C# 中通过数据网格视图中的列名从选定行中获取数据

how do I get the data from selected row by its column name from datagridview in c#

您好,我有一个包含 5 列的 table。列名之一是“邮件”。我想通过列名从选定行中获取数据。

例如:当我点击某行时,我想在文本框中显示邮件列的数据

我该如何实现?

只需处理 DataGridView 的 CellClick 事件,如下所示 -

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
      txtMail.Text = dataGridView1.Rows[e.RowIndex].Cells["mail"].Value.ToString();
}

您将 datagridview 和文本框绑定到同一个绑定源

以新的形式执行这些步骤(这样它就不会打扰您拥有的东西)

  • 将 DataSet 类型的新文件添加到您的项目
  • 打开它,右键单击表面,选择添加数据表。称之为人
  • 右键单击 table 并添加一列,将其命名为名称
  • 再次右键单击,添加年龄列 - 使其类型为 int
  • 同样,生日,将其设置为日期时间(只是为了添加一些不同的数据类型)
  • 保存并关闭设计器
  • 打开 Form1 设计器。显示数据源 window(查看菜单>>其他 windows)
  • 将 Person 节点拖到窗体上。一个 DataGridView 出现,连同一个 BindingSource、DataSet 和底部托盘中的一些其他东西。如果需要,您可以删除导航器。 DGV 绑定到绑定源。绑定源绑定到数据集
  • 展开 DataSources 中的 Person 节点,看到下面的 Name 文本框了吗?也将其拖到表单中。出现一个文本框。它的 Text proeprty 也绑定到 bindingsource
  • 你也可以拖动其他一些控件,如果你愿意,你可以在拖动之前改变它们的类型。生日应该作为日期时间选择器等

就是这样;设计者已经设置了您想要的行为起作用所需的一切。想看Form1.Designer.cs可以看到它写的代码

运行程序,在网格中添加一些数据,然后点击上下行。文本框中的数据发生变化..如果您更改文本框,则网格会更新

该过程体现了 MVC - 您将数据保存在模型中(数据table),通过网格或文本框查看它,然后通过 grid/textbox 再次控制(更改)它(尽管您可能会将网格设置为只读,因此它更像是一个查看者角色,并将控制角色下放给文本框