如何在C#中的combobox显示成员中追加两个字段值
在我的表中,我有一个firstname
和lastname
的字段,现在我想要的是在combobox中将firstname
和lastname
设置为displaymember
,但我不知道该怎么做。
像这样的东西
cmbEmployees.DataSource = GetEmployees(); //something like below line which doesn't work cmbEmployees.DisplayMember = "lastname, first_name"; cmbEmployees.ValueMember = "id";
我怎样才能做到这一点? 这样lastname
和firstname
都将显示在combobox
假设你有这样一个类:
class Person { public string FirstName { get; set; } public string LastName { get; set; } public string FullName { get { return LastName + ", " + FirstName; } } public Person(string firstname, string lastname) { FirstName = firstname; LastName = lastname; } }
如果您没有FullName
属性,只需以您希望显示名称的格式创建一个。 然后将DisplayMember
设置为FullName
。
此示例将指导您如何在不修改基类的情况下执行此操作。
首先,你可以让你的DisplayMember有一个属性,让我们说:
cmbEmployees.DisplayMember = "lastname";
现在,在[Design]模式下转到表单,右键单击ComboBox – > Properties。
在“属性”窗口的顶部,单击“事件”(闪电图标),
在下面的事件列表中查找格式(在Property Changed下)并输入一些事件名称,例如:ComboBoxFormat,然后按Enter键。 你会看到这个:
private void ComboBoxFormat(object sender, ListControlConvertEventArgs e) { }
现在写下以下几行:
private void ComboBoxFormat(object sender, ListControlConvertEventArgs e) { // Assuming your class called Employee , and Firstname & Lastname are the fields string lastname = ((Employee)e.ListItem).Firstname; string firstname = ((Employee)e.ListItem).Lastname; e.Value = lastname + " " + firstname; }
而已 ;)
您的查询在GetEmployees()函数中应该是这样的。
"SELECT id,(lastname + ' ' + first_name) AS NAME FROM TABLE" cmbEmployees.DataSource = GetEmployees(); cmbEmployees.DisplayMember = "NAME"; cmbEmployees.ValueMember = "id";
尝试以下方法之一:
- 以字段连接的新
Dictionary
– https://stackoverflow.com/a/1006588/1816426 - 计算列 – https://stackoverflow.com/a/1006546/1816426
在C#6中,在Employee类中创建只读属性
public string FullName=>$"{lastname} {firstname}";
然后
cmbEmployees.DataSource = GetEmployees(); //something like below line which doesn't work cmbEmployees.DisplayMember = "FullName"; cmbEmployees.ValueMember = "id";