2

ユーザーを含むリストボックスがあります。データソースは、ユーザー タイプの一般的なリストです (contains、id、firstname、lastname、...)。ここで、ID を (dataValueField を介して) datavalue として使用し、LastName + ' ' + Firstname を DataTextField として使用したいと考えています。

誰がこれがどのように可能か教えてもらえますか?

C# (ASP.NET) を使用しています。

4

2 に答える 2

12

最も簡単な方法は、完全な名前を含む User クラスに新しいプロパティを追加することです。

public string FullName
{
    get { return LastName + " " + FirstName; }
}

そして、リストボックスをそれにバインドします。

これには、フルネームの構築方法の背後にあるロジックを一元化できるという利点があるため、Web サイトの複数の場所で使用でき、変更する必要がある場合 (たとえば、名 + " " + 姓) を実行するだけで済みます。それを一箇所に。

クラスを変更できない場合は、ラッパー クラスを作成できます。

public class UserPresenter
{
    private User _user;

    public int Id
    {
        get { return _user.Id; }
    }

    public string FullName
    {
        get { return _user.LastName + " " + _user.Firstname; }
    }
}

または、itemdatabound イベント (名前が間違っている可能性があります) にフックし、リスト ボックスの項目を直接変更します。

于 2009-05-14T07:29:33.750 に答える
1
list.DataTextField = string.Format("{0}, {1}", LastName, Firstname);

他の場所で使用する場合は、同じものを返す User クラスに DisplayName プロパティを追加することもできます。

于 2009-05-14T07:30:50.127 に答える