基于ComboBox中的选定列从表中获取ID(PK)

时间:2015-04-19 00:57:05

标签: c# sql sql-server wpf

我有 STATUS 表,它包含以下列:

ID ColA ColB ColC

我希望这些3列显示在WPF表单的ComboBox中。精细!我将通过分别获得Distinct ColA,ColB,ColC 来做到这一点(如果我错了,请纠正我

现在我想根据这些组合框在另一个表中插入一个条目。

此表 STATUS_HISTORY 具有以下结构(与我认为的问题无关):

ID EmpID (FK from Emp) StatusID (FK from Status) UpdationDate

现在我如何根据所选的ComboBox获取状态ID?我应该使用这样的查询:

SELECT ID from STATUS WHERE ColA LIKE '@SelectedColAValue' AND ColB LIKE '@SelectedColBValue' AND ColC LIKE '@SelectedColCValue'

这对我来说听起来非常简单。有没有更好的方法呢?

更新

STATUS 表包含如下行:

ID ColA ColB ColC  
1   A1    B1   C1  
2   A1    B1   C2  
3   A1    B2   C1  
4   A1    B2   C2  
5   A1    B3   C1  
6   A1    B3   C2  
7   A2    B1   C1  
8   A2    B1   C2     

现在,如果我在ComboBox1中选择A1,它对应多行(依此类推..) 我希望它能进一步解释

2 个答案:

答案 0 :(得分:0)

更简单的方法是创建Status .NET对象并将其绑定到组合框。 您可以将同一个对象绑定到所有组合框,并显示要在组合框中显示的值。

检查DisplayMemberPathSelectedItemSelectedValueSelectedValuePath

然后将SelectedItem ID传递给数据库。

答案 1 :(得分:0)

将STATUS的ID列设为String,并将其生成为ColA + ColB + ColC。它对于所有行必须是唯一的。因此,用户从ComboBoxes中选择值使ComboBoxA.Value + ComboBoxB.Value + ComboBoxC.Value具有相同的连接。那将是PK插入STATUS_HISTORY。