当ajax打开时,带有MVC的Kendo UI网格无法使用模板

jm.*_*jm. 2 kendo-ui

我正在使用KendoUI和MVC.NET来创建一个网格.网格的数据源是回调到我的控制器的AJAX.

绑定列上的TEMPLATE属性应允许我使用RAZOR模板格式化列.

这有效,直到我"转向"ajax.下面的代码说明了这个问题:

@using Kendo.Mvc.UI;
@model IEnumerable<Test>
@{
    ViewBag.Title = "Test - Index";
}

<h2>Index</h2>

@{
        //public class Test {
        //    public string A;
        //    public string B;
        //}

        var data = new List<Test>() { new Test() { A="a1", B="b1"}, new Test() { A="a2",B="b2"}};

        // This one fails to honor TEMPLATE
        Html.Kendo().Grid(data).Name("test").Columns(columns => {
                                                              columns.Bound("A").Template(@<div>@item.A TEMPLATE APPLIED</div>);
                                                              columns.Bound("B");
                                                          }).DataSource(ds=>ds.Ajax()).Render(); // THIS BREAKS IT!

        // This one honors template               
        Html.Kendo().Grid(data).Name("test").Columns(columns => {
                                                              columns.Bound("A").Template(@<div>@item.A TEMPLATE APPLIED</div>);
                                                              columns.Bound("B");
                                                          }).Render();


    }
Run Code Online (Sandbox Code Playgroud)

此示例中显示两个网格.第二个网格确实剃刀模板.第一个未能显示模板化数据.第一个网格只显示原始数据.

注意:我已尽可能简化此代码以说明问题.通常,在调用Ajax()方法之后,我还调用其他方法来设置回调.

Sam*_*rie 7

文档中所述,对于Ajax数据源,您应该使用ClientTemplate而不是Template.注意,语法略有不同:

Html.Kendo().Grid(data).Name("test").Columns(columns => {
    columns.Bound("A").ClientTemplate("<div>#=A# TEMPLATE APPLIED</div>");
    columns.Bound("B").ClientTemplate("<div>#=A# AND #=B# JUST FOR KICKS</div>");;
}).DataSource(ds=>ds.Ajax()).Render();
Run Code Online (Sandbox Code Playgroud)