【问题标题】:How to display information from joined tables in a DataGridView如何在 DataGridView 中显示连接表中的信息
【发布时间】:2015-08-19 15:10:22
【问题描述】:

我想编写一个在表单应用程序中显示数据库内容的软件。为了便于说明,我以购物清单为例。

  • 我在一张表中有多个列表tLists
  • 我在另一个表中有多个tProductPackages
  • 一个列表可以包含多个 productPackage,一个 productPackage 可以位于多个列表中。这种 m:n 关系反映在名为 tListProdPacks 的单独表中。
  • productPackage 包含产品。一个产品可以有多个产品包。在每个 tProductPackage 表条目中,都有一个外键 FK_ProductID 引用表 tProducts 中的条目。

我的表单应用程序应该使用BindingNavigator 浏览所有列表。在某些绑定控件中,它应该显示所选列表的详细信息。这工作正常。 (只是绑定控件。)

所有列表内容(tListProdPacks 中所选tLists 元素的条目)都应显示在DataGridView 中。这也工作正常。此外,productPackages 的详细信息(tProductPackages 项目,即到下一张表多一跳)也可以正确显示。在此表中,产品值可用作 ID (FK_ProductID)(tProducts 的外键)。

有没有办法在DataSource为tListProdPacks的DataGridView中显示产品名称(仅包含在tProducts中)? (显示tProductPackages 成员很容易,因为tProductPackages 的主键引用它tListProdPacks 并使用此ID 我可以显示tProductPackages 的所有其他详细信息,只需继续使用相同的valueMember 但使用不同的DisplayMember 值对于单个 DataGridView 列 [使用 DGV 中的下拉控件]。) 但是当进一步跳转一个表时(即跳转到tProducts 表时),这不再起作用了。

我知道我可以创建一个自定义查询(加入、查看)来获得我想要的结果,但是我不能再从数据集中更新数据库了。

有谁知道如何做到这一点? (我猜框架提供了一些简单的方法,我只是看不到,对吧?)

我不确定我是否能够描述我想要完成的工作是否足够好。如果没有,请帮我补充什么。

最好的问候, 汤姆

【问题讨论】:

    标签: c# sql datagridview


    【解决方案1】:

    如果它们包含主键外键关系,你可以使用连接来关联表。使用连接,您可以检索包含您可能需要的所有字段的单个结果集。

    【讨论】:

    • 但是当使用 JOIN 时,我无法更新数据库,对吧?如果我也想做 UPDATE 怎么办?
    • 因为最好打破所有表并按顺序插入相应的数据,但使用事务和提交属性,这样如果任何更新失败,它将回滚。你需要在那里做一些逻辑,比如更新哪个表,最后一个,或者你需要表 ist 中的任何 id 来在第二个更新等等
    猜你喜欢
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    相关资源
    最近更新 更多