我有一個窗體窗體應用程序。在表單中,我有一個ComboBox和一個列表框。當我選擇組合框時,我想顯示用戶可以在checkListBox中檢查的項目列表,我想出瞭如何將數據綁定到組合框部分,但我不確定如何顯示值列表,以便用戶可以在checkListBox中選擇。假設我有一個存儲在SQL數據庫調用item_table中的項目列表,我如何根據何時從組合框中選擇將其顯示到checkListBox?代碼供參考將不勝感激。由於當選擇組合框項目時,顯示項目列表到CheckListBox
例如,
讓的說,用戶從下拉框中選擇「艾米」,該checkListBox將顯示項目列表「項目1,項目2,項目3,ITEM4」。
當用戶從下拉框中選擇「布拉德」,它會顯示物品的清單:「項目2,ITEM5,item10
等
這裏是我的數據庫表中(SQL)服務器
user_Detail
In my user_Detail table , I have 10 user and each of them have a primary key (userId) and a column (userName);
item_Detail
In my item_Detail table, I have 20 items and they also have a primary key (itemId) and a column (itemName)
在SQL控制檯,我內連接兩個表(這我不知道,如果我需要做同樣的在我的SqlCommand代碼)
這是我的控制檯中的sql命令。
select
user_Detail.userId,
user_Detail.userName,
item_Detail.itemId,
item_Detail.itemName
from
item_Detail
INNER JOIN user_Detail ON user_Detail.userId = item_Detail.itemId
這裏是我的代碼
namespace Test {
public partial class MainForm: Form {
SqlConnection myConn;
SqlCommand myCommand;
SqlDataReader myReader;
SqlDataAdapter myDa;
DataTable dt;
DataSet ds = new DataSet();
public MainForm() {
InitializeComponent();
// loadComboBox
loadComboBox();
}
//Connect to my db to fetch the data when the application load
private void loadComboBox() {
myConn = new SqlConnection("Server = localhost; Initial Catalog= dbName; Trusted_Connection = True");
string query = "Select * from user_Detail";
myCommand = new SqlCommand(query, myConn);
try {
myConn.Open();
myReader = myCommand.ExecuteReader();
string s = "<------------- Select an item ----------->";
itemComboBox.Items.Add(s);
itemComboBox.Text = s;
while (myReader.Read()) {
//declare a string
object userId = myReader[userId"];
object userName = myReader["userName"];
//my comboBox named userComboBox
userComboBox.Items.Add(userName.ToString());
}
} catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}
//Display some items here (this is my checkListBox
private item_checkListBox(Object sender, EventArgs e){
}
private void load_item(){
}
您好賈斯廷,感謝您的回覆,我會試一試。只是想知道,是'userComboBox.SelectedIndexChanged + =(o,ev)=> {ChangeCheckListItems(); }; while循環之後和myConn.Close()之前的代碼?還有我得到你爲什麼試圖在那裏做swtich語句,如果comboBox中只有2個項目,這個工作很好,但是如果我有10個項目,讓我們說,做所有的開關案例會很痛苦嗎?我們可以以某種方式在foreach循環中循環遍歷comboBox中的每個項目嗎? – RedRocket
你可以在你的構造函數的InitializeComponent()之後。 正如我所說的,你可以使用參數化的方法。就像是。 '私人無效AddItemsToCheckListBox(字符串用戶名){ //創建一個查詢,將返回您需要爲用戶的所有項目。 } ' –
謝謝,如果我們不使用開關盒,是另一種方式嗎?因爲我的組合框中有10個或更多的項目。這樣做會很痛苦:/ – RedRocket