1

我正在使用 Entity Framework 6 对数据库中的客户端列表进行建模。我将集合成功绑定到列表框。我不知道该怎么做是使用对象中的多个字段来绑定到DisplayMemberWindows 窗体 ListBox 的属性。

这有效...

myLsiTBox.DataSource = context.Clients.ToList();
myLsiTBox.DisplayMember = "CompanyName";
myLsiTBox.ValueMember = "id";

这失败了...

myLsiTBox.DataSource = context.Clients.ToList();
myLsiTBox.DisplayMember = "CompanyName" + "-" + "LastName" + " - " + "FirstName";
myLsiTBox.ValueMember = "id";

如何在 ListBox 中显示多个字段的内容?

4

2 回答 2

0

如果这是您的客户:

public class Client
{
    public string CompanyName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

您可以创建一个 ClientViewModel,然后将列表框数据源绑定到 ClientViewModels 列表并将 DisplayMember 设置为“FullDetails”。

public class ClientViewModel
{
    public string CompanyName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string FullDetails { get { return string.Format("{0}-{1} - {2}", this.CompanyName, this.LastName, this.FirstName)} }

    public ClientViewModel(Client c)
    {
        this.CompanyName = c.CompanyName;
        this.FirstName = c.FirstName;
        this.LastName = c.LastName;
    }
}

..或者如果可以的话,只需将 FullDetails 属性添加到原始客户端类。

于 2014-05-27T20:04:40.820 回答
0
myLsiTBox.DataSource = context.Clients.select(a=>new {

  ID=a.id;
  Title=a.CompanyName + "-" + a.LastName + " - " + a.FirstName;

}).ToList();

myLsiTBox.DisplayMember = "Title";
myLsiTBox.ValueMember = "ID";
于 2019-12-03T22:20:02.360 回答