如何在一个组合框中显示两个不同的列

本文关键字:两个 显示 组合 一个 | 更新日期: 2023-09-27 18:21:39

我想在一个特定的组合框中显示两个不同的列。当我运行它时,将显示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";

}

如何在一个组合框中显示两个不同的列

我看到您已经创建了包含"组合"值的单个结果列。这就是战斗。

但是,您需要为您的列命名(注意AS FullName别名):

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

所以你以后可以参考它的名字:

cboName.DisplayMember = "FullName";

这将起作用。我发现将DictionaryComboBox结合具有更可预测的结果。

我的方法省略了额外的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";  
    }          
}

检查此项:

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

向致以最诚挚的问候