在一个组合框中显示2列

时间:2013-08-07 14:56:54

标签: c# winforms

我有一张员工表。我希望组合框能够显示员工编号和城市。

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;

这就是我到目前为止所得到的,有人可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

您可以覆盖绑定到组合框的类的.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();
}

无需设置值成员

答案 2 :(得分:0)

在数据表中,使用添加带表达式的第三列。在最后一列中,进行另外两列的连接。

检查this是否有表达参考。

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