我正在开发一个Windows窗体应用程序,我有一个绑定到我的数据库的checkListBox。我使用参数方法来存储选定的文本。但是,我想让该项的主键与comboBox.SelectedValue
类似,而不是文本。有没有办法做到这一点?
这是我的代码。如您所见,该参数由checkedItem文本过滤。当我从checkListBox中选择checkedItem时,它假设只获取所选项。如果我的CheckListBox项目有像Peter,Amy,Bob和David(非重复名称)这样的东西,这个工作正常。但是,如果我的checkListBox具有重复的名称。彼得,艾米,艾米,鲍勃,大卫,艾米,这会引起问题。如果我选择第一个艾米,我的parameterList
将有艾米,艾米,艾米。这是一个问题,因为我正在通过我的firstName过滤它(所以每当它们看到相同的名称时,它都会添加到parameterList
。我真正想要的是通过诸如employeeId之类的键进行过滤,这样它就不会我的parameterList
中有任何重复的名称。(就像我从comboBox.selecteIndex
更改为comboBox.selectedValue
时)。当我只选择第一个Amy时,我的parameterList应该只有一个已检查的Amy,但并非所有Amy都没有检查。我想知道我是否可以从我的comboBox值中做selectedValue
来映射数据库值?帮助将不胜感激
例如这里是我的checkListBox:
[x]Amy
[]Peter
[]David
[]Amy
[]Amy
[]Jimmy
你只能看到第一个艾米被选中。但我的参数列表有Amy,Amy,Amy,因为我按firstName过滤。
string parameterList = "";
int parameterCounter = 0;
// Add a parameter placeholder for each "checked" item
for (var t = 0; t < employeeCheckListBox.CheckedItems.Count; t++)
{
parameterList += (t == 0) ? "@p" + t : ", @p" + t;
}
string query = "select distinct firstName, lastName, employeeEmail,
entryYear, leaveYear
from[employee_detail] as ed
LEFT JOIN[department_detail] as dd ON ed.employeeId = dd.employeeId
Where firstName = (" + parameterList + ")";
myCommand = new SqlCommand(query, myConn);
for (var t = 0; t < employeeCheckListBox.CheckedItems.Count; t++)
{
myCommand.Parameters.AddWithValue ("@p" + t, employeeCheckListBox.CheckedItems[t].ToString());
}
if (employeeCheckListBox.CheckedItems.Count == 0)
{
myCommand = new SqlCommand(Equery, myConn);
}
以下是我想要改变的内容
string query = "select distinct firstName, lastName, employeeEmail,
entryYear, leaveYear
from[employee_detail] as ed
LEFT JOIN[department_detail] as dd ON ed.employeeId = dd.employeeId
Where firstName = (" + parameterList + ")";
// parameterList应该是checkListBox的选定值
答案 0 :(得分:1)
尝试使用this问题
中提到的员工记录的任何ID设置值成员答案 1 :(得分:1)
您的问题是您有多名员工同名,并且 用户如何在UI上区分它们。
因此,对此问题的一个非常简单快速的解决方法是,更改您在复选框列表中显示的UI上的内容。
由于每位员工都有唯一的电子邮件ID ...因此,显示EmailID以及姓名..更改您的查询,如下所示..
select td.teacherId as ID, chineseName + ' ' + email as Name from[teacher_detail] .....