【问题标题】:Telerik MVC Grid. How to bind to a nullable columnTelerik MVC 网格。如何绑定到可为空的列
【发布时间】:2011-06-03 16:04:24
【问题描述】:

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

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() 有什么区别?

【问题讨论】:

  • 我想唯一的解决方案是不使用空对象。 o.Foo 应该至少包含一个新的 Foo 对象的空实例,但不能为 null
  • 通常情况下,你会使用“columns.Bound(o => o.Foo.Name)” 你能更好地描述它为什么不起作用吗?它抛出错误了吗?或者发生了什么?
  • 没有错误...如果有空值则不呈现。忙碌指示器一直在滚动,就是这样。

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    假设ModelRowData 实例的集合,您可以将getter 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() 做了什么。我没用过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 2011-03-29
      相关资源
      最近更新 更多