我正在處理Windows窗體應用程序,並且我有一個綁定到我的數據庫的checkListBox。我正在使用參數方法來存儲選定的文本。但是,我想要獲取與comboBox.SelectedValue
類似的項目的主鍵而不是文本。有沒有辦法做到這一點?如何獲取checkListBox的值
這是我的代碼。正如你所看到的,參數是通過checkedItem文本過濾的。當我從我的checkListBox中選擇我的checkedItem時,它假設只獲取選定的項目。這項工作很好,如果我的CheckListBox項目有像彼得,艾米,鮑勃和大衛(非重複的名稱)。但是,如果我的checkListBox具有重複的名稱。彼得,艾米,艾米,鮑勃,大衛,艾米,這會造成問題。如果我選擇第一個艾米,我的parameterList
將有艾米,艾米,艾米。這是一個問題,因爲我通過我的firstName過濾它(所以只要他們看到相同的名稱,它就會添加到parameterList
。我真正想要的是使用employeeId之類的鍵過濾,以便它不會有任何重複的名稱在我的parameterList
。(就像當我從comboBox.selecteIndex
更改爲comboBox.selectedValue
)。當我只選擇第一個艾米時,我的parameterList應該只有一個檢查艾米,但不是所有艾米甚至沒有檢查。 ?我可以從我的組合框value`這樣做selectedValue
映射數據庫值幫助將不勝感激
例如這裏是我的checkListBox:
[x]Amy
[]Peter
[]David
[]Amy
[]Amy
[]Jimmy
您只能看到第一個Amy被選中。但我的parameterList有艾米,艾米,艾米,因爲我按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
[這太問題(http://stackoverflow.com/ question/3801290/is-there-displaymember-and-valuemember-like-properties-for-checkedlistbox-co)應該可以幫到你。 – Icemanind
你的問題對我沒有多大意義..可能需要編輯.. –
@AmneshGoel,我編輯了我的問題,看看有沒有道理 – RedRocket