2013-04-26 65 views
4

我有一个主/子网格结构,像这样的条件表达式:剑道网格DetailTemplate,访问子网格值

父网格:

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

儿童网格作为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 {#...#}#语句,但是评级值来自父级网格而不是当前的子网格(父网格发生有一列也被命名为“评级”),以证明它来自父级网格,如果我将“评级”更改为只存在于子网格中的列,即SubEleID,则会在浏览器中发出错误,表示未找到SubEleID。

问题:

那么,什么是支撑评级的语法获取子网格值? 只是为了尝试,我甚至尝试过:data.Rating或$(this).Rating,都没有工作。

请指教, 谢谢

回答

7

#在一些剑道模板用于parent属性(如您使用的名称:gridSubEle_#=EleID#,但对于一些子属性,你必须逃离#\\

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

谢谢,作品;-) – smeagull 2013-04-26 14:32:25

+1

优秀的塞缪尔,你救了我的时间! – ravisolanki07 2013-07-23 10:27:59