ComboBox显示成员在多个字段上

Jim*_*mex 2 c# data-binding formatting combobox winforms

我正在尝试在C#中设置a的.DisplayMember属性ComboBox,但我想将其绑定到中的多个列.DataSouce

我的SQL看起来像这样:

SELECT PersNbr, PersFirstName, PersMiddleName, PersLastName
FROM Pers WHERE PersNbr = :persNbr;
Run Code Online (Sandbox Code Playgroud)

我将此查询保存在,DataTable因此所选的每个列在中都有其自己的列Datatable

我想将.DisplayMember其组合在一起,PersFirstName + PersMiddleName + PersLastName这样它们的全名看起来像这样:

comboBox.DisplayMemeber = "PersFirstName" + "PersMiddleName" + "PersLastName"
Run Code Online (Sandbox Code Playgroud)

我知道我可以在查询中做到这一点:

SELECT PersNbr, (PersFirstName || PersMiddleName || PersLastName) PersName
Run Code Online (Sandbox Code Playgroud)

然后执行以下操作:

comboBox.DisplayMember = "PersName";
Run Code Online (Sandbox Code Playgroud)

但是我不想对数据库层中的数据进行格式化,因为它不应该存在。

在Winforms中我还能如何实现呢?

har*_*ded 5

您可以创建一个表达式列,然后将其用作DisplayMember:

dataTable.Columns.Add(
    "FullName", 
    typeof(string), 
    "PersFirstName + ' ' + PersMiddleName + ' ' PersLastName");

comboBox.DisplayMember = "FullName";
Run Code Online (Sandbox Code Playgroud)

  • 哇,我不知道像表达式列这样的东西。那很有意思 (2认同)