2

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() メソッドを呼び出した後、他のメソッドも呼び出してコールバックをセットアップします。

4

1 に答える 1

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();
于 2013-01-05T11:55:07.650 に答える