簡體   English   中英

如何獲取checkListBox的值

[英]How to get the value of the checkListBox

我正在開發一個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。我想知道我是否可以從我的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的選定值

嘗試使用問題中提到的員工記錄的任何ID設置值成員

您的問題是您有多個具有相同名稱的員工,以及您的用戶如何在UI上區分它們。

因此,對此問題的一個非常簡單快速的解決方法是,更改您在復選框列表中顯示的UI上的內容。

由於每個員工都有唯一的電子郵件ID ...因此,顯示EmailID以及姓名..更改您的查詢如下..

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM