DataTextField в ListBox представляет собой комбинацию из 2 полей - PullRequest
2 голосов
/ 14 мая 2009

У меня есть список, содержащий пользователей. Источник данных - это общий список типа «Пользователь» (содержит идентификатор, имя, фамилию, ...). Теперь я хочу использовать идентификатор в качестве datavalue (через dataValueField), и я хочу, чтобы LastName + '' + Имя в качестве DataTextField.

Может кто-нибудь сказать мне, как это возможно?

Я использую C # (ASP.NET).

Ответы [ 2 ]

12 голосов
/ 14 мая 2009

Самый простой способ - добавить новое свойство в класс 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 голос
/ 14 мая 2009
list.DataTextField = string.Format("{0}, {1}", LastName, Firstname);

Если вы используете его в другом месте, вы также можете добавить свойство DisplayName в класс User, который возвращает то же самое.

...