Телерик MVC Grid. Как выполнить привязку к столбцу, допускающему значение NULL

У меня есть сетка со столбцом, который содержит данные с нулевым значением

Html.Telerik().Grid(Model)
   .Columns(columns =>
    {
       columns.Add(o => o.Foo);
    }

Это работает, но показывает что-то вроде [object Object] на клиенте. Предположительно он должен отображать Foo.Name, я попытался переопределить ToString() Foo - не сработало, я попытался изменить это на columns.Add(o => o.Foo.Name);, но тогда он не хочет отображать всю сетку. Пробовал использовать columns.Bound(o => o.Foo.Name); - безрезультатно. Кстати, в чем разница между Add() и Bound()?


person iLemming    schedule 03.06.2011    source источник
comment
Я думаю, единственное решение - не использовать нулевые объекты. o.Foo должен содержать по крайней мере новый пустой экземпляр объекта Foo, но никогда не должен содержать null   -  person iLemming    schedule 03.06.2011
comment
Обычно вы используете columns.Bound(o => o.Foo.Name) Не могли бы вы лучше описать, почему это не сработало? Это выдало ошибку? Или что случилось?   -  person Codo    schedule 03.06.2011
comment
Никаких ошибок... Просто не отображается, если есть ноль. Индикатор занятости продолжает вращаться, вот и все.   -  person iLemming    schedule 03.06.2011


Ответы (2)


Я бы использовал шаблон столбца, чтобы сделать это. Вот код

Html.Telerik().Grid(Model)
   .Columns(columns =>
    {
       columns.Add(o => o.Foo).Template(o =>
       {
          %>
             <%= o.Foo != null ? o.Foo.Name : "" %> 
          <%
       })
       .ClientTemplate("<#= Foo != null ? Foo.Name : '' #>");
    }
person Atanas Korchev    schedule 06.06.2011

Предполагая, что Model представляет собой набор экземпляров RowData, вы можете добавить геттер FooName в класс RowData:

public class RowData
{
    public string FooName
    {
        get { return Foo == null ? null :: Foo.Name; }
    }
}

Затем вы можете привязать к FooName:

Html.Telerik().Grid(Model)
    .Columns(columns =>
    {
        columns.Bound(o => o.FooName);
    }

Я не могу проверить это в данный момент. Возможно, вам также понадобится сеттер. Ничего не нужно делать.

И я понятия не имею, что делает Add(). Я никогда не использовал его.

person Codo    schedule 03.06.2011