Kendo Grid Detail Template,访问SubGrid值的条件表达式

时间:2013-04-26 04:10:57

标签: templates kendo-ui kendo-grid detail

我有一个像这样的Master / Child网格结构:

父网格:

@(Html.Kendo().Grid<ElementViewModel>()
    .Name("gridEle")
    .Columns(cols =>
    {
        cols.Bound(e => e.EleNum)
    })
    .DataSource(dataSource => dataSource
        .Ajax()
        .Read(read => read.Action("GetElements", "Rating", pi))   
    )
    .ClientDetailTemplateId("tempSubEle")          
)

Child Grid as DetailTemplate:

 <script id="tempSubEle" type="text/kendo-tmpl">

    @(Html.Kendo().Grid<SubElementViewModel>()
        .Name("gridSubEle_#=EleID#")
        .Columns(cols =>
        {
             cols.Bound(e => e.Rating)      
                 .ClientTemplate("<input type='checkbox' value='1' " +
                                "#if(Rating==1){#checked='checked'#}# />" );
        })
        .DataSource(dataSource => dataSource
            .Ajax()
            .Read(read => read.Action("GetSubElementsByElementID", "Rating", new {eID = "#=EleID#" }))
        )
       .ToClientTemplate()
    )
</script>

问题:

我在ClientTemplate列中有#if {#...#}#语句,但是Rating值来自父网格而不是当前的子网格(父网格发生的列也称为'评级'),为了证明它来自父网格,如果我将评级更改为仅存在于子网格中的列,即SubEleID,它会在浏览器中显示错误,表示未找到SubEleID。

问题:

那么Rating的语法是什么?获取Child Grid值? 只是为了尝试,我甚至尝试过:data.Rating,或者$(this).Rating,没有用。

请指教, 谢谢

1 个答案:

答案 0 :(得分:7)

某些kendo模板中的

#用于父属性(就像您用于名称gridSubEle_#=EleID#一样),但对于某些子属性,您必须使用{{#转义\\ 1}}:

         cols.Bound(e => e.Rating)      
             .ClientTemplate("<input type='checkbox' value='1' " +
                            "\\#if(Rating==1){\\#checked='checked'\\#}\\# />" );