2012-06-11 17 views
1

我想對數據庫執行查詢,這會引起一個customerID(標識)和名和姓。鍵入C#組合框但顯示不同的值

在組合框中,我想顯示名字和姓氏,但選中時 - 值是customerID。 customerID將成爲另一個查詢的主題來自動填充窗體。

這是我到目前爲止 - 我知道combobox.Items.Add部分是錯誤的 - 這就是我遇到我的問題。

conn = new SqlConnection(); 
conn.ConnectionString = "my connection string"; 

SqlDataAdapter da = new SqlDataAdapter("Select * from Customer", conn); 
DataTable dt = new DataTable(); 

da.Fill(dt); 

for (int i = 0; i < dt.Rows.Count; i++) 
{ 
    comboSelectCust.Items.Add(dt.Rows[i]["FName" + "Surname"]); 
} 
+0

在你的情況下,你不會得到價值。如果我明白你想要什麼,那麼你需要知道'DataSource','DisplayMember'和'ValueMember'屬性。 – Reniuz

回答

0

您可以使用標籤財產ComboBoxItem設定值(內容是設定顯示文本的屬性):

comboSelectCust.Items.Add(new ComboBoxItem() { 
    Content = dt.Rows[i]["FName"] + dt.Rows[i]["Surname"], 
    Tag = dt.Rows[i]["customerId"] 
}); 
0
for (int i = 0; i < dt.Rows.Count; i++) 
{ 
    comboSelectCust.Items.Add(new KeyValuePair<string, int>(dt.Rows[i]["FName"].ToString() + dt.Rows[i]["Surname"].ToString(), Convert.ToInt32(dt.Rows[i]["customerId"].ToString())); 
} 
2

由於您使用爲此,一個DataTable,爲什麼不只是將它與DisplayMember和ValueMember綁定?

0

這裏是僞代碼如何使用DataSourceDisplayMemberValueMember

SqlDataAdapter da = new SqlDataAdapter("Select FName || Surename as FullName, customerID from Customer", conn); 
DataTable dt = new DataTable(); 

da.Fill(dt); 

comboSelectCust.DataSource = dt; 
comboSelectCust.DisplayMember = "FullName"; 
comboSelectCust.ValueMember = "customerID"; 
0

試試這個一看

conn = new SqlConnection(); 
conn.ConnectionString = "my connection string"; 

SqlDataAdapter da = new SqlDataAdapter("Select (FName+' '+Surname) As Name,customerID from Customer", conn); 
DataTable dt = new DataTable(); 

da.Fill(dt); 

comboSelectCust.DisplayMember = "Name"; 
comboSelectCust.ValueMember = "customerID"; 
comboSelectCust.DataSource = dt; 

我改變了查詢,並添加顯示部件和valuemeber性的判定和分配數據表作爲數據源