我正在使用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()方法之后,我还调用其他方法来设置回调.
如文档中所述,对于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)
| 归档时间: |
|
| 查看次数: |
3774 次 |
| 最近记录: |