Kendo网格应显示链接表的值

时间:2015-02-23 12:23:06

标签: kendo-grid kendo-asp.net-mvc

我有一个非常简单的产品,它有一个来自用户表的编辑器。

整个事情都映射在edmx中。

在我的fetch方法中,我有一些代码:

    public ActionResult Products_Read([DataSourceRequest]DataSourceRequest request)
    {
        using (var context = new ProductModel())
        {
            var products = from row in context.Products select new { row.Id, row.Title, row.EditorId, row.Editor.Name };
            var result = products.ToDataSourceResult(request);
            //Debug:
            //var s = new JavaScriptSerializer().Serialize(Json(result, JsonRequestBehavior.AllowGet));
            return Json(result, JsonRequestBehavior.AllowGet);
        }
    }

不幸的是,我可以看到Editor.Name被序列化为" Name"。

在cshtml上,我有了我的网格

@(Html.Kendo().Grid<Product>()
      .Name("grid")
      .DataSource(dataSource => dataSource
          .Ajax()
          .Model(model => model.Id(c => c.Id))
          .Read(read => read.Action("Products_Read", "Product"))
          .Update(update => update.Action("Products_Update", "Product"))
      )
      .Columns(product =>
      {
          product.Bound(p => p.Id).Hidden(true);
          product.Bound(p => p.Title).Title("Title");
          product.Template(p => p.Editor.Name).Title("Editor");//<-- HERE

网格中没有任何内容,我认为我必须装饰一些内容,以便网格知道在哪里获取值。

否则我可以做一个viewmodel,但是我会放弃很多功能的构建。

下一步是在编辑产品时获取下拉列表。我希望有人可以简单地链接到一个开箱即用的地方。

1 个答案:

答案 0 :(得分:1)

您需要像这样设置模板

.Columns(product =>
  {
      product.Bound(p => p.Editor.Name).Template(@<text>
           <strong>@item.Name</strong>
      </text>).Title("Editor");
  })

Refrence