【问题标题】:How to use binding sources to bind across multiple data tables?如何使用绑定源跨多个数据表进行绑定?
【发布时间】:2013-06-12 13:13:22
【问题描述】:

首先,我想说我已经在互联网上进行了广泛的搜索,但没有找到关于这个主题的任何内容。

我的情况是我在 SQL 数据库中有一个联结表表(一个只包含其他表的主键和外键的表)。现在,我实际上希望通过 win 表单编辑这个联结表。使用组合框设置连接表的绑定源没有问题,但是用户在选择数据时只会看到主键/外键 GUID,显然这是不可取的。这些外键指向 do 的记录有一个“名称”列,但是它们在另一个表上。那么我怎样才能拥有它,以便当用户在看到一堆 FK guid 的用户稳定地选择连接表中的记录时,用户将看到与这些记录关联的名称。

最后,请注意 binding 确实是这里的关键。我可以获取数据查询(相应记录的名称)来填充列表框/组合框没问题,问题是当用户选择联结表上的记录时,我需要其他控件来反映选择的变化。我认为绑定是实现这种效果的方式。

对不起,如果我的问题有点难以理解,我很难解释它(我自己对winforms还是新手)。

【问题讨论】:

  • 我认为您不想编辑联结表。你怎么知道它的记录是独一无二的?您可能想要编辑属于 N:M 关联另一侧的一个对象的对象集合。所以这将需要一些主从布局,其中一个详细记录可以属于多个主记录。但也许你可以展示你的预期设计。很难推断你在尝试什么。

标签: c# .net winforms datatable


【解决方案1】:

没有中间(联结)表应该绑定控制,因为它纯粹是为了实现many to many 关系。因此,强烈建议您重新考虑您的方案或设计。

【讨论】:

  • 但是是最终需要插入/更新/删除记录的联结表。我还能怎么做?
【解决方案2】:

问题出在您的 sqldatasource... 我假设您的 sqldatasource 看起来像这样:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyDatabaseString %>"
                    SelectCommand="SELECT * FROM [ListOfFunFacts]"></asp:SqlDataSource>

如果你想让名字显示出来,你需要这样的东西:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyDatabaseString %>"
                        SelectCommand="SELECT * FROM [ListOfFunFacts] a inner join Table2 b on  a.foreignkeyTable2 = b.Id"></asp:SqlDataSource>

【讨论】:

  • 我真的很喜欢这个aspwinforms 问题的回答。更不用说在 HTML 标签中使用 SQL 的东西了。史诗。完全+1。你应该是我的老板。您应该是公司的所有者。
猜你喜欢
  • 2018-05-18
  • 1970-01-01
  • 2013-04-21
  • 1970-01-01
  • 2018-06-08
  • 2019-11-26
  • 1970-01-01
  • 2016-04-14
  • 2011-07-25
相关资源
最近更新 更多