2013-07-09 32 views
0

我想在一個特定的組合框中顯示兩個不同的列。當我運行它時,將顯示Customer ID。這是我的代碼。如何在一個組合框中顯示兩個不同的列

void GetRecords2() 
{ 


    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = cn; 
    cmd.CommandText = "SELECT CustomerID, firstname 
      + ',' + lastname FROM Customer"; 

    SqlDataAdapter adp = new SqlDataAdapter(cmd); 
    DataSet ds = new DataSet(); 
    adp.Fill(ds, "Customer"); 

    cboName.DataSource = ds; 
    cboName.DisplayMember = "Customer.firstname, Customer.lastname"; 


    cboName.ValueMember = "Customer.CustomerID"; 


} 
+0

不確定是否可能?究竟是什麼意思 –

回答

1

我看到您已經創建了包含「組合」值的單個結果列。這是戰鬥。

但是,你需要給你的列名(注意AS FullName別名):

cmd.CommandText = "SELECT CustomerID, firstname + ',' + lastname AS FullName " + 
    "FROM Customer"; 

所以,你可以通過名字隨後參考:

cboName.DisplayMember = "FullName"; 
+0

組合框仍然顯示CustomerID – user2559183

1

這將工作。我發現將Dictionary綁定到ComboBox具有更可預測的結果。

我的方法省略了額外的SQL語法,DataSetSqlDataAdapter

相反,我使用SqlDataReader到所需的信息放入一個Dictionary然後我結合該Dictionary作爲ComboboxDataSource

void GetRecords2() 
{   
    Dictionary <int, string> myDict = new Dictionary<int, string>(); 
    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = cn; 
    cmd.CommandText = "SELECT CustomerID, firstname, lastname FROM Customer"; 

    SqlDataReader reader = cmd.ExecuteReader(); 
    while (reader.Read()) 
    { 
     myDict.Add(Convert.ToInt32(reader["CustomerID"]), 
      reader["firstname"].ToString() + " " + reader["lastname"].ToString()); 
    } 

    if (myDict.Count > 0) 
    { 
     cboName.DataSource = new BindingSource(myDict, null); 
     cboName.DisplayMember = "Value";    
     cboName.ValueMember = "Key"; 
    }   
} 
0

檢查:

void GetRecords2() 
{ 
    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = cn; 
    cmd.CommandText = "SELECT CustomerID, firstname 
      + ',' + lastname FullName FROM Customer"; 

    SqlDataAdapter adp = new SqlDataAdapter(cmd); 
    DataSet ds = new DataSet(); 
    adp.Fill(ds, "Customer"); 

    cboName.DataSource = ds; 
    cboName.DisplayMember = "FullName"; 


    cboName.ValueMember = "CustomerID"; 
} 

若要選擇的值:

string customerid = cboName.SelectedValue.toString(); //CustomerID: 1 

若要選擇的項目

string fullname = cboName.SelectedItem.Text; //FullName : John Hawkins 

問候

相關問題