我想在一个特定的组合框中显示两个不同的列。当我运行它时,将显示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";
答案 1 :(得分:1)
这会奏效。我发现将Dictionary
绑定到ComboBox
具有更可预测的结果。
我的方法省略了额外的SQL
语法,DataSet
和SqlDataAdapter
。
相反,我使用SqlDataReader
将所需信息放入Dictionary
,然后将Dictionary
绑定为DataSource
的{{1}}。< / p>
Combobox
答案 2 :(得分: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
最好的问候