2013-04-16 93 views
3

我有一个kendo ui网格,我想绑定图像。这里是我的代码:定义kendo ui网格列的自定义模板

@model List<NewHope.Model.Mt4_prices_instant> 

<div class="tabContainer"> 
@(Html.Kendo().TabStrip() 
      .Name("tabstripMarketWatch") 
      .Items(tabstrip => 
      { 
       tabstrip.Add().Text("Market Rates") 
        .Selected(true) 
        .Content(
         @<text> 
          @if (Model != null) 
          { 
           @(Html.Kendo().Grid(Model)  
            .Name("Grid") 
            .Columns(columns => 
            { 
             columns.Template(
              @<text> 
               @if (item.direction == 1) 
               { 
                <img src="~/Images/up.png" alt="up"/> 
               } 
               else if (item.direction == 0) 
               { 
                <img src="~/Images/down.png" alt="down"/> 
               } 
              </text>).Title(""); 
             columns.Bound(p => p.symbol); 
             columns.Bound(p => p.bid); 
             columns.Bound(p => p.ask); 
            }) 
            //.Groupable() 
            //.Pageable() 
            .Sortable() 
            .Scrollable() 
            //.Filterable() 
            .DataSource(dataSource => dataSource 
             .Ajax() 
             .Read(read => read.Action("Products_Read", "MarketWatch")) 
            ) 
           )  
          } 
         </text> 
       ); 

       tabstrip.Add().Text("Cubes") 
        .Content(@<text> 
        <div class="weather"> 
         <h2>18<span>&ordm;C</span></h2> 
         <p>Cubes</p> 
        </div> 
        <span class="rainy">&nbsp;</span> 
        </text>); 
      }) 
    ) 
</div> 
<style> 
#tabstripMarketWatch-1, #tabstripMarketWatch-2 { /* tabstrip element */ 
    position: absolute; 
    top: 41px; 
    bottom: 0; 
    left: 0; 
    right: 0; 
    width: auto; 
    height: auto; 
} 

#Grid { 
    top: 0; 
    bottom: 0; 
    left: 0; 
    right: 0; 
    width: 100%; 
    height: 100%; 
} 

对于以下部分:

columns.Template(
    @<text> 
     @if (item.direction == 1) 
     { 
      <img src="~/Images/up.png" alt="up"/> 
     } 
     else if (item.direction == 0) 
     { 
      <img src="~/Images/down.png" alt="down"/> 
     } 
    </text>).Title(""); 

我得到“行内标记块不能嵌套内标记的只有一个级别是允许的。 “错误。

我有什么做的,成功地使我的网格?

由于提前,

+2

看到这个职位:http://stackoverflow.com/questions/10684025/inline-markup-blocks-cannot-be-nested-only-one-level-of-inline-markup-is-allowe –

回答

5
columns.Bound(p => p.bid).ClientTemplate("<# if(direction == 1) {#>" + 
       "<img src='~/Images/up.png' alt='up'/>" + 
       "<#} else if(direction == 0) {#>" + 
       "<img src='~/Images/down.png' alt='down'/>" + 
       "<#}#>")    
       .Title("End").Width(80); 
+0

如果您的模板中有很多条件,最好将正在测试的值传递给函数。 'columns.Bound(p值=> p.bid).ClientTemplate( “#=的getImage(方向)#”) ...更多代码... <脚本类型= “文本/ JavaScript的”> 功能的getImage(方向){ 如果(方向== 1){ 返回 “up”; } 否则,如果(方向== 0){ 回报 “down” } 否则,如果(<一些其他条件){}} ' – Pauline

+1

谁能推荐的东西,我可以看明白这一切是如何语法合在一起。我正在努力去真正理解。谢谢 – Dave

1

这是因为剃刀看到多个模板模块,它认为这对标签栏:

.Content(
    @<text> 
     @if (Model != null) 
     { .. 

和电网:

columns.Template(
    @<text> 
     @if (item.direction == 1) 
     { 

和锐利不像那样。尝试@Samuel链接到的方法,即使用帮助器方法呈现网格,然后在tabstrip中调用该帮助器。