ListBox中的DataTextField是2个字段的组合

时间:2009-05-14 07:21:13

标签: c# asp.net listbox datasource datatextfield

我有一个包含用户的列表框。 数据源是User(包含,id,firstname,lastname,...)类型的通用列表。 现在我想使用id作为datavalue(通过dataValueField),我希望LastName +''+ Firstname作为DataTextField。

谁能告诉我这是怎么回事?

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

2 个答案:

答案 0 :(得分:12)

最简单的方法是将新属性添加到包含全名的User类:

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

将列表框绑定到该地址。

这样做的好处是可以集中构建全名的逻辑,因此您可以在整个网站的多个位置使用它,如果需要更改它(例如,对于名字+“”+姓氏)你只能使用它需要在一个地方做到这一点。

如果不能更改类,则可以创建包装类:

public class UserPresenter
{
    private User _user;

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

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

或挂钩到itemdatabound事件(可能在那里输错了名字)并直接改变列表框项目。

答案 1 :(得分:1)

list.DataTextField = string.Format("{0}, {1}", LastName, Firstname);

如果你在别处使用它,你也可以向User类添加一个DisplayName属性,返回相同的东西。