C# JOIN 和 DataSet:它将如何工作

本文关键字:何工作 工作 JOIN DataSet | 更新日期: 2023-09-27 18:30:26

我有两个表:A和B。

表 A

编号 |数1 |22 |53 |1

表 B

编号 |名字2 |X5 |Y1 |Z

当我从数据库中获取信息时,我会填充一个数据集。但是,我在 A.Number = B.Name 上使用 JOIN。因此导致:

结果

编号 |号码 |名字1 |2 |X2 |5 |Y3 |1 |Z

我有一个 DataGridView,它显示结果,但只显示 ID名称列。

有一件事困扰着我。我想更改结果。数据网格视图中的名称值,但我希望使用相应的 A 更新AB 的数字值。名称值。表 A 没有"名称"列。

所以我想得到这样的东西:

表A之前

编号 |数1 |2

数字 2 对应于"X"名称值。

在数据网格视图中更改"Y"的名称,该名称与"5"数字一致...

表A之后

编号 |数1 |5

C# JOIN 和 DataSet:它将如何工作

不要使用 Join。

您希望将表 A 显示为主体,并带有"数字"的查找列。

您需要 A 和 B 之间的关系,以及 A 上具有表达式属性的数据列

我假设Id是两个表中的PK。通过更改表中"X"的名称B您可以更改与Id =2 关联的值Name。如果要更改表 A 中的关联值 Id =1,则需要将其Number值更改为 5,而不是Name本身。

您问的问题实际上是这样的:"如果表B中存在名称,我希望Number根据名称(不是唯一的)自动更改为其他名称"。Thich对我来说是相当荒谬的。例如,什么是值更改为不在列表中的项目?

您需要的是某种表A列表,其中包含一个下拉列表,用于填充表B中的值Number。然后用户将从预定义列表中选择值,然后使用正确的Id更新表 A

我会将 Result.Name 列更改为DataGridViewComboBoxColumn,将表 B 连接到它,并在将其发送回数据库进行存储之前在客户端引用组合的值。

以下是用于DataGridView的其他列类型

  • DataGridViewTextBoxColumn
  • DataGridViewCheckBoxColumn
  • DataGridViewImageColumn
  • DataGridViewButtonColumn
  • DataGridViewLinkColumn
  • 自定义:继承自DataGridViewColumn