首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得checkListBox的值

如何获得checkListBox的值
EN

Stack Overflow用户
提问于 2015-09-30 15:23:15
回答 2查看 164关注 0票数 3

我正在处理一个windows窗体应用程序,并且我有一个绑定到我的数据库的checkListBox。我使用参数方法来存储选定的文本。但是,我希望获得与comboBox.SelectedValue类似的该项的主键,而不是文本。有办法这样做吗?

这是我的密码。如您所见,参数由checkedItem文本过滤。当我从我的checkedItem中选择我的checkListBox时,它假设只得到所选的项。如果我的CheckListBox项目有像Peter、Amy、Bob和David这样的东西(不重复的名称),这个工作就很好了。但是,如果我的checkListBox有重复的名称。彼得,艾米,艾米,鲍勃,大卫,艾米,这会引起问题。如果我选择第一个艾米,我的parameterList将有艾米,艾米,艾米。这是一个问题,因为我是通过我的firstName过滤它(所以每当他们看到相同的名称,它就会添加到parameterList中。我真正想要的是通过一个键(如employeeId )进行筛选,这样它在我的parameterList中就不会有任何重复的名称了。(就像我从comboBox.selecteIndex转换为comboBox.selectedValue时一样)。当我只选择第一个艾米时,我的parameterList应该只检查一个艾米,而不是所有甚至没有被选中的艾米。我想知道是否可以从我的selectedValue值中执行类似于comboBox值的操作来映射数据库值?我们会感谢你的帮助。

例如,这里是我的checkListBox:

代码语言:javascript
复制
[x]Amy
[]Peter
[]David
[]Amy
[]Amy
[]Jimmy

你只能看到第一个艾米被选中了。但是我的parameterList有艾米,因为我是通过firstName过滤的。

代码语言:javascript
复制
    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);
    }

这是我想要改变的

代码语言:javascript
复制
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的选定值

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-30 17:35:31

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

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

因为每个员工都有唯一的电子邮件id..。所以显示EmailID和名字。更改您的查询如下。

代码语言:javascript
复制
select td.teacherId as ID, chineseName + ' ' + email as Name from[teacher_detail] .....
票数 1
EN

Stack Overflow用户

发布于 2015-09-30 15:31:04

this问题中所述,尝试使用员工记录的任何ID设置值成员

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32869929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档