Форматирование столбца WebGrid для содержания двух частей данных - PullRequest
2 голосов
/ 29 декабря 2011

Я пытаюсь отформатировать столбец WebGrid, чтобы объединить две части данных (имя и фамилия).Вот то, что я пытаюсь, но я признаю, я не думаю, что я полностью понимаю, как использовать данные (кроме основных сценариев) в WebGrid.(По имени столбца объект «Учитель» передается на мой взгляд, но чтобы получить имя учителя, мне нужно получить эту информацию из связанного пользовательского объекта, поскольку пользователи могут играть несколько ролей.)

grid.Column(
    columnName: "Teacher.User",
    header: "Teacher",
    style: "",
    canSort: true,
    format: (item) =>
        {
            var text = Html.DisplayTextFor(item => item.LastName) + ", " + Html.DisplayTextFor(item => item.FirstName);
            return Html.Raw(text);
        }
)

Ответы [ 2 ]

12 голосов
/ 18 апреля 2012

Простейший способ объединить две части данных, следуйте этому

grid.Column("FullName", format: (item) => item.LastName+ ' ' + item.FirstName)
2 голосов
/ 29 декабря 2011

Хелперы со строгой типизацией, которые принимают лямбда-выражения, не работают с динамическими выражениями, и это то, чем утоплен хелпер WebGrid.Аргумент item, передаваемый в функцию format, имеет тип dynamic, поэтому вы не можете использовать его с лямбда-выражениями.

Я пытаюсь отформатировать столбец WebGrid, чтобы я мог объединитьдве части данных вместе (имя и фамилия

Какой прекрасный кандидат для модели представления. Просто добавьте еще одно свойство в вашу модель представления пользователя:

public string FullName 
{ 
    get 
    {
        return string.Format("{0}, {1}", this.LastName, this.FirstName);
    }
}

, которое вы будете использоватьиспользуйте в представлении:

grid.Column(
    columnName: "Teacher.User.FullName",
    header: "Teacher",
    style: "",
    canSort: true
)
...