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

时间:2012-04-06 07:44:28

标签: c# join dataset

我有两张桌子:A和B.

表A

Id | Number
1  | 2
2  | 5
3  | 1

表B

Id | Name
2  | X
5  | Y
1  | Z

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

结果

Id | Number | Name
1  | 2      | X
2  | 5      | Y
3  | 1      | Z

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

有一件事困扰着我。我想在DataGridView中更改 结果 .Name 值,但我想用相应的 更新表A B .Name 值的 .Number 值。 表A 没有名称列。

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

表A之前

Id | Number
1  | 2

数字 2符合'X'名称值。

在DataGridView中为'Y'更改名称,其符合'5'数字 ...

之后的表A:

Id | Number
1  | 5

3 个答案:

答案 0 :(得分:0)

不要使用加入。

您希望将表A显示为具有Number的查阅列的主体。

您需要A和B之间的关系以及A上带有Expression property的DataColumn

答案 1 :(得分:0)

我认为Id是两个表中的PK。通过在B表格中更改“X”的名称,您可以更改与Name = 2相关联的Id值。如果您想更改表IdA = 1的相关值,则需要将其Number值更改为5,而不是Name本身。

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

您需要的是某种表Number列表,其中B的DropDown填充了表A中的值。然后,用户将从预定义列表中选择值,并使用正确的Id更新表{{1}}。

答案 2 :(得分:0)

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

以下是DataGridView

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