2

我有一个包含用户的列表框。数据源是用户类型的通用列表(包含,id,firstname,lastname,...)。现在我想将 id 用作数据值(通过 dataValueField),并且我想要 LastName + ' ' + Firstname 作为 DataTextField。

谁能告诉我这怎么可能?

我正在使用 C# (ASP.NET)。

4

2 回答 2

12

最简单的方法是向包含全名的 User 类添加一个新属性:

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

并将列表框绑定到那个。

这具有集中构建全名背后的逻辑的优势,因此您可以在网站的多个位置使用它,如果您需要更改它(例如,更改为 Firstname + " " + Lastname),您只需要做在一个地方。

如果更改类不是一个选项,您可以创建一个包装类:

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);

如果您在其他地方使用它,您还可以将 DisplayName 属性添加到返回相同内容的 User 类。

于 2009-05-14T07:30:50.127 回答