Telerik MVC网格。如何绑定到可空列

时间:2011-06-03 16:04:25

标签: asp.net-mvc-3 telerik telerik-grid telerik-mvc

我有一个包含可以为空的数据的列的网格

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

这样可行,但在客户端上显示[object Object]之类的内容。据说它应该显示Foo.Name,我试图覆盖Foo的ToString() - 没有用,我试图将其更改为columns.Add(o => o.Foo.Name);,但后来它不想渲染整个网格。 我尝试使用columns.Bound(o => o.Foo.Name); - 没有结果。顺便说一句,Add()Bound()之间有什么区别?

2 个答案:

答案 0 :(得分:3)

我会使用列的模板来执行此操作。这是一些代码

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

答案 1 :(得分:2)

假设ModelRowData个实例的集合,您可以向FooName类添加一个getter 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()做了什么。我从来没有用过它。