3

私はそのようなグリッドを定義しました

@(Html.Kendo().Grid<FieldViewModel>(Model.Fields)
    .HtmlAttributes(new { @class = "fullScreen" })
    .Name("formFields")
    .ClientDetailTemplateId("formFieldsTemplate")
    .Columns(columns =>
        {
            columns.Bound(e => e.Key);
            columns.Bound(e => e.DisplayName);
            columns.Bound(e => e.FieldTypeName);
            columns.Bound(e => e.Order);
            columns.Bound(e => e.IsMandatory);
            columns.Bound(e => e.Type);
        })
    .Pageable()
    .Sortable()
    .Scrollable()
    .Selectable()
    .Resizable(resize => resize.Columns(true))
    .Groupable()
    .Filterable()
      .DataSource(dataSource => dataSource.Ajax().ServerOperation(false).Model(model => model.Id(e => e.Key))))

および詳細テンプレート

<script id="formFieldsTemplate" type="text/kendo-tmpl">
    @(Html.Kendo().Grid<FieldViewModel>()
        .Name("FormField_#=Key#")
        .ClientDetailTemplateId("formFieldsTemplate")
        .Columns(columns =>
            {
                columns.Bound(e => e.Key);
                columns.Bound(e => e.DisplayName);
                columns.Bound(e => e.FieldTypeName);
                columns.Bound(e => e.Order);
                columns.Bound(e => e.IsMandatory);
                columns.Bound(e => e.Type);
            })
        .DataSource(dataSource => dataSource.Ajax().Read(read => read.Action("LoadFieldDetails", "Forms", new { formPath = Model.Schema, rootElementName = Model.Root ,fieldKey = "#=Key#" })))
        .Pageable()
        .Sortable()
        .Selectable()
        .ToClientTemplate())
</script>

ご覧のとおり、私は (int 型の) プロパティを持っているので、プロパティが特定の値に設定されているType場合、行全体に詳細ビューを表示したり、矢印を表示したりしたくないのです。Typeどうすれば達成できますか?

4

1 に答える 1

6

このようにテンプレートを定義すると、クライアント側で使用されます。コマンドによってレンダリングされます@(Html.Kendo().Grid<FieldViewModel>()が、実際にはクライアント側で使用されます。ただし、クライアント側で比較することはできませんType。ただし、たとえば、モデルを構築するときは次のようにします。

if (myType is MyDataType) // Do the type check
{
    myRow.UseTemplate = 1; // Define ID for template
} 
else  // ...and so on, can do a 'switch` or whatever
{
    myRow.UseTemplate = 2;
}

テンプレート ID で切り替えるテンプレートは次のとおりです。

<script id="formFieldsTemplate" type="text/kendo-tmpl">
    # if (UseTemplate == 1) { #

        <div>Template 1</div>

    # } else { #

        <div>Template 2</div>

    # } #
</script>

データ行内に表示するデータが異なる場合、正しく機能するかどうかはわかりません...ただし、アイデアが得られることを願っています。

于 2012-11-19T12:45:56.150 に答える