MVC.NET で KendoUI を使用してグリッドを作成しています。グリッドのデータ ソースは、コントローラーへの 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();
}
このサンプルでは、2 つのグリッドが表示されます。2 番目のグリッドは、かみそりのテンプレート化に問題ありません。最初の例では、テンプレート化されたデータを表示できません。最初のグリッドは、元のデータのみを示しています。
注: 問題を説明するために、このコードを可能な限り単純化しました。通常、Ajax() メソッドを呼び出した後、他のメソッドも呼び出してコールバックをセットアップします。