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";


}
4

3 回答 3

1

我看到您已经在创建一个包含“组合”值的结果列。这就是战斗。

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

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

因此,您可以稍后按名称引用它:

cboName.DisplayMember = "FullName";
于 2013-07-09T01:05:15.280 回答
1

这将起作用。我发现将 a 绑定Dictionary到 aComboBox具有更可预测的结果。

我的方法省略了额外的SQL语法DataSet, 和SqlDataAdapter.

相反,我使用 将SqlDataReader所需信息放入 aDictionary中,然后将其绑定Dictionary为.DataSourceCombobox

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";  
    }          
}
于 2013-07-09T01:19:39.907 回答
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

最好的祝福

于 2013-07-09T01:20:01.703 回答