【问题标题】:Kendo UI Grid different detail templates depending on conditionKendo UI Grid 根据条件使用不同的详细信息模板
【发布时间】:2012-11-07 08:16:17
【问题描述】:

我定义了这样的网格

@(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>

如您所见,我有Type 属性(int 类型),所以当Type 属性设置为特定值时,我想要做的是不显示任何详细信息视图并且整行上没有箭头.我怎样才能实现它?

【问题讨论】:

    标签: c# telerik telerik-grid telerik-mvc kendo-ui


    【解决方案1】:

    当您像这样定义模板时,它会在客户端使用。它由@(Html.Kendo().Grid&lt;FieldViewModel&gt;() 命令呈现,但实际上随后在客户端使用。但是您不能在客户端比较 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>
    

    如果您在数据行中显示不同的数据,不确定它是否能正常工作...不过希望您能理解。

    【讨论】:

    • @JevgenijNekrasov 啊好吧,我可能被 Type 这个名字通常用于实际的类 types 的事实误导了。但是,您可以跳过代码的第 1 部分。那么这个模板对你有用吗?
    • 是的,但问题是如果 Type 等于某个值,我也想删除箭头。
    • Here 是一个示例,它概述了如何隐藏详细信息模板箭头
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多