如何获得checkListBox的值

本文关键字:的值 checkListBox 何获得 | 更新日期: 2023-09-27 18:15:14

我正在一个windows窗体应用程序上工作,我有一个checkListBox绑定到我的数据库。我使用参数方法来存储选定的文本。但是,我想获得该项的主键,类似于comboBox.SelectedValue,而不是Text。有办法做到这一点吗?

这是我的代码。如您所见,该参数是由checkedItem文本过滤的。当我从checkListBox中选择checkedItem时,它应该只获取选中的项。如果我的CheckListBox项目有像Peter, Amy, Bob和David(非重复名称)这样的内容,则此方法可以正常工作。但是,如果我的checkListBox有重复的名称。彼得,艾米,艾米,鲍勃,大卫,艾米,这会引起麻烦的。如果我选择第一个Amy,我的parameterList将会是Amy, Amy, Amy。这是一个问题,因为我通过我的firstName过滤它(所以每当他们看到相同的名字时,它将添加到parameterList。我真正想要的是通过一个键(如employeeId)进行过滤,这样它就不会在我的parameterList中有任何重复的名称。(就像我从comboBox.selecteIndex更改为comboBox.selectedValue一样)。当我只选择第一个Amy时,我的parameterList应该只有一个选中的Amy,而不是所有没有选中的Amy。我想知道我是否可以做一些像selectedValue从我的comboBox值'映射数据库值?如有帮助,不胜感激 例如,下面是我的checkListBox:
[x]Amy
[]Peter
[]David
[]Amy
[]Amy
[]Jimmy

您只能看到第一个Amy被选中。但是我的parameterList有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的选定值

如何获得checkListBox的值

您的问题是您有多个同名的员工,并且你的用户如何在UI上区分它们。

所以一个非常简单和快速的解决这个问题的方法是,改变你在UI上的内容,你在复选框列表中显示。

由于每个员工将有唯一的电子邮件id…所以显示EmailID和Name..修改你的查询如下…

select td.teacherId as ID, chineseName + ' ' + email as Name from[teacher_detail] .....

尝试使用本问题中提到的员工记录的任何ID设置值成员