键入 C# 组合框,但显示不同的值
本文关键字:显示 组合 键入 | 更新日期: 2023-09-27 18:36:42
我想对一个数据库进行查询,该数据库将显示一个客户ID(身份)以及名字和姓氏。
在组合框中,我想显示名字和姓氏,但在选择时 - 值是客户 ID。客户 ID 将运行为另一个查询的主题,以自动填充窗口窗体。
这就是我到目前为止所拥有的 - 我知道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"]);
}
既然你使用DataTable,为什么不把它与DisplayMember和ValueMember绑定呢?
可以使用 ComboBoxItem 的 Tag 属性来设置值(内容是设置显示文本的属性):
comboSelectCust.Items.Add(new ComboBoxItem() {
Content = dt.Rows[i]["FName"] + dt.Rows[i]["Surname"],
Tag = dt.Rows[i]["customerId"]
});
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()));
}
以下是如何使用DataSource
、DisplayMember
和ValueMember
的伪代码:
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";
试试这个看看
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;
我更改了查询并添加了显示成员和值管理器,并将数据表分配为数据源