在一个组合框中显示2列

本文关键字:显示 2列 组合 一个 | 更新日期: 2023-09-27 18:26:42

我有一个员工表。我希望组合框显示员工号码和城市。

SqlCommand cmd = new SqlCommand();
Connection c = new Connection();
cmd.CommandText = "SELECT employeeNumber, city FROM tblEmployee";
SqlDataAdapter adp = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adp.Fill(ds, "Employee");
comboBox1.DataSource = ds;

这就是我目前所得到的,有人能帮我吗?

在一个组合框中显示2列

您可以将Format事件添加到ComboBox中,并在其中编写您想要显示的内容:

private void _Combobox1_Format(object sender, ListControlConvertEventArgs e)
{
    var x = (DateFilterType)e.ListItem;
    e.Value = /* insert string concatenation stuff here... */;
}

您可以覆盖绑定到组合框的类上的.ToString()

class MyClass
{
    public override string ToString()
    {
        return thing1.PadRight(10) + thing2.PadRight(10);
    }
    public string thing1 { get; set; }
    public string thing2 { get; set; }
}

然后如果你做一些类似的事情

List<MyClass> mc = new List<MyClass>();
mc.Add(new MyClass() { thing1 = "blah1", thing2 = "blah2});
comboBox1.DataSource = mc;

显示在comboBox1中的文本是blah1 blah2(我们这里的格式化去掉了我所有的空格,但这些字符串应该被填充)

你可以使用你想要的类的任何值作为

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
   label1.Text = ((MyClass)comboBox1.SelectedItem).ToString();
}

而不必设置值成员

在数据表中,使用add第三列和表达式。在最后一列中,对另外两列进行串联。

检查此项以获取表达式引用。

在此之后,使用第三列来绑定您的组合框。