Заполнение списка выбора из нескольких полей - PullRequest
1 голос
/ 25 февраля 2010

Моя проблема довольно проста.Допустим, у меня есть выпадающий список с пользователями.в базе данных у меня есть 3 поля для моей пользовательской таблицы:

 user_id
 user_name
 user_firstname

в моем приложении MVC я хочу связать этих пользователей с проектами.вот почему я хочу выпадающий список.

Теперь я хочу иметь список выбора с идентификатором в качестве значения, а имя и фамилия должны быть 'text'

  SelectList sl = new SelectList(users, "user_id", "user_name");

Теперь, как я могу получить имя также в тексте?это должно быть довольно легко, но, кажется, это не так ...

Ответы [ 2 ]

6 голосов
/ 25 февраля 2010

Используйте LINQ для преобразования вашего списка пользователей в список SelectListItem.

var selectOptions = 
    from u in yourUserQuery
    select new SelectListItem { 
        Value = u.user_id, 
        Text = u.user_firstname + " " + u. user_name 
    };

Затем вы можете преобразовать это в SelectList, как считаете нужным. Лично мне нравится определять .ToSelectList() метод расширения для IEnumerable<SelectListItem>, но для каждого свой.

1 голос
/ 25 февраля 2010

Вам нужно построить список из вашей базы данных в нужном вам формате. Вот что я сделал после того, как моя база данных прочитала DataTable,

        IList<UsrInfo> MyResultList = new List<UsrInfo>();
        foreach (DataRow mydataRow in myDataTable.Rows)
        {
            MyResultList.Add(new UsrInfo()
            {
                Usr_CD = mydataRow["USR_NR"].ToString().Trim(),
                Usr_NA = mydataRow["USR_NA_LAST"].ToString().Trim() + " , " +
                         mydataRow["USR_NA_FIRST"].ToString().Trim()
            });
        }

        return new SelectList(MyResultList, "Usr_CD", "Usr_NA");
...