【问题标题】:Populating C# combobox from SQL and restrict results based on choice从 SQL 填充 C# 组合框并根据选择限制结果
【发布时间】:2016-11-23 12:29:15
【问题描述】:

我正在将 SQL 表中的一些数据绑定到 C#ComboBox。我想要实现的是:

假设我们在 SQL 中有 3 个表

  1. Room(卧室、浴室、大厅)
  2. Stuff(床、浴室、衣柜)
  3. StuffProperty(双人床、HotRunningWater、衣服)。

我的目标是根据第一个 ComboBox 的选择来限制第二个和第三个 ComboBox 值,即:

第一个ComboBox 包含卧室、浴室、大厅。如果用户选择浴室,则第二个ComboBox 仅包含 Bath,不包含 Bed 或 Wardrobe,第三个 ComboBox 仅包含 HotRunningWater,不包含 DoubleBed 或 Clothes

如何在不按“实时”按钮的情况下将查询发送回 SQL?

另外,我是否应该使用存储过程将 Room、Stuff 和 StuffProperty 值映射在一起并在 C# 代码中调用它们(这是我更喜欢的)?或者我应该用 C# 编写整个过滤内容(例如使用开关)?

对此一无所知,甚至不确定是否有任何方法可以在不按按钮的情况下“通知”SQL 最近的选择。我使用的列只是为了说明问题。

另外,我知道这个问题已经在这里问过几次了,但我发现的只是 VB 代码,我需要使用存储过程和 C# 或仅 C# 对其进行排序。

【问题讨论】:

  • 这是winforms吗? wpf?

标签: c# sql-server winforms combobox


【解决方案1】:

您需要挂钩组合框的事件,很可能是 selectedIndexChanged 或类似的。这就是您获得“现场”效果的方式。您需要挂钩第一个组合框的事件,然后填充第二个。

如果是第二个,你需要填充第三个。

我不确定你是如何使用 Metro Wizard 的,但希望通过游戏计划你可以找到所需的代码。

【讨论】:

  • 啊好吧 - 实际上有一个 selectedIndexChanged 属性。我把它称为存储过程——我现在需要弄清楚它应该包含什么,即如何将一个表中的一个值映射到另一个表中的另一个值。我实际上正在考虑使用一个表中的主键并使用 INNER JOIN 从另一个表中获取相同的键(这次作为外键)。不过,我可能不会走在正确的轨道上——我们拭目以待。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多