使用来自不同列的值通过数据源填充组合框

Posted

技术标签:

【中文标题】使用来自不同列的值通过数据源填充组合框【英文标题】:Fill Combo-box via DataSource Using Values from Various Columns 【发布时间】:2010-06-12 04:00:34 【问题描述】:
            Employee emp = new Employee();
            comHandledBySQt.DataSource = emp.GetDataFromTable("1");
            comHandledBySQt.DisplayMember = "FirstName";

上面的代码在组合框中显示员工名字的下拉列表。我想显示名字和姓氏。我该怎么做?

我尝试在下面包含两列 FirstName 和 LastName,但没有成功。

comHandledBySQt.DisplayMember = "FirstName" + " " + "LastName";

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

如果您需要立即与数据源进行绑定,则需要为此创建一个自定义视图。或者您可以遍历从 emp.GetDataFromTable() 返回的行,并使用 string.Format() 或一些字符串操作将每一行添加到 DropDown。

【讨论】:

【参考方案2】:

最简单的方法是选择具有所需值的匿名对象。

   Employee emp = new Employee();
   comHandledBySQt.DataSource = from x in emp.GetDataFromTable("1")
                    select new  x.Id, Name = x.FirstName + " " + x.LastName ;
   comHandledBySQt.DisplayMember = "Name";
   comHandledBySQt.ValueMember = "Id";

【讨论】:

我对 Linq 不是很熟悉。我收到此错误:“无法将 lambda 表达式转换为类型 'string',因为它不是委托类型” - 关键字选择变为蓝色下划线,请您提供建议。谢谢

以上是关于使用来自不同列的值通过数据源填充组合框的主要内容,如果未能解决你的问题,请参考以下文章

如何在组合框中返回未绑定列的值

使用表中的不同值填充组合框

组合框级联效应不适用于不同的行

使用组合框过滤记录并填充第二个组合框

从 MS Access 数据库行填充 VB 组合框

VB.NET 仅从一个字段访问填充组合框