如何将某些文本附加到Control的DisplayMember

时间:2013-07-24 05:39:36

标签: c# ado.net listbox datasource bindingsource

如何在DisplayMember末尾添加一些文字或其他字段而不更改DataSource

this.lstSubjects.DataSource = this.subjectBindingSource;
this.lstSubjects.DisplayMember = "Caption";
this.lstSubjects.FormattingEnabled = true;
this.lstSubjects.Name = "lstSubjects";
this.lstSubjects.ValueMember = "SubjectCode";
this.lstSubjects.SelectedIndexChanged += new System.EventHandler(this.lstSubjects_SelectedIndexChanged);

例如,我想在每个列表框行中显示DataTable的CaptionSubjectCode字段,但每行的值为SubjectCode

我想要这样的事情:

ListBox的DisplayMember =“技术(AD)”

ListBox的值=“AD”

提前感谢,

2 个答案:

答案 0 :(得分:2)

首先,你可以给你的DisplayMember留下一个属性,比如说:

lstSubjects.DisplayMember = "lastname";

现在,在[设计]模式下转到您的表单,右键单击ListBox - >属性。

在“属性”窗口的顶部,单击“事件(闪电图标)”,

在下面的事件列表中查找格式(在Property Changed下)并输入一些事件名称,例如:lstSubjectsFormat,然后按Enter键。你会看到这个:

private void lstSubjectsFormat(object sender, ListControlConvertEventArgs e)
{

}

现在写下以下几行:

private void lstSubjectsFormat(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;
}

就是这样;)

答案 1 :(得分:0)

我有你的帮助。据我所知,你正在做一个SQL查询来获取你的数据。 使用this使您的查询包含您需要的字符串。 例如,如果您的表包含两个varchar字段,则可以执行

SELECT column1 +'(' + column2 + ')' FROM myTable;

这是最好的方法,也是正确的方法,我花了一些时间才找到它...