如何获取checkListBox的值

红火箭

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

这是我的代码。如您所见,该参数由checkedItem文本过滤。当我从我的checkListBox中选择我的checkedItem时,它假定只获取选定的项目。如果我的CheckListBox项具有诸如Peter,Amy,Bob和David之类的名称(非重复名称),则此功能正常。但是,如果我的checkListBox具有重复的名称。彼得,艾米,艾米,鲍勃,大卫,艾米,这会引起问题。如果我选择第一个艾米,我parameterList将有艾米,艾米,艾米。这是一个问题,因为我正在按我的firstName进行过滤(因此,每当他们看到相同的名称时,它都会添加到中parameterList。我真正想要的是通过诸如employeeId之类的键进行过滤,以使其在其中不会有任何重复的名称。我的parameterList。(就在我从改变像comboBox.selecteIndexcomboBox.selectedValue)。当我只选择第一个Amy时,我的parameterList应该只选中一个Amy,而不是所有未选中的Amy。我想知道是否可以selectedValue通过comboBox value来映射数据库值?帮助将不胜感激

例如,这是我的checkListBox:

[x]Amy
[]Peter
[]David
[]Amy
[]Amy
[]Jimmy

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

阿姆内什·戈尔(Amnesh Goel)

您的问题是您有多个同名员工,以及您的用户如何在UI上区分他们。

因此,解决此问题的方法非常简单快捷,那就是更改您在复选框列表中显示的UI上的内容。

由于每个员工都有唯一的电子邮件ID,因此,请在显示电子邮件ID的同时显示名称。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章