1

Entity Framework 6 を使用して、データベースからクライアントのリストをモデル化しています。コレクションをリストボックスに正常にバインドしています。どうすればよいかわかりません。オブジェクトの複数のフィールドを使用してDisplayMember、Windows フォーム 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;
    }
}

..または、可能であれば、元の Client クラスに FullDetails プロパティを追加するだけです。

于 2014-05-27T20:04:40.820 に答える