2012-06-27 100 views
1

我知道有一个关于有条件的DetailView的问题,但我觉得这不是我正在寻找的。我一直在使用Telerik Grid for MVC,并且设法为我的网格中的行创建了一个DetailView。事情是现在,我的DetailView充满了HTML代码,我想在里面有一个新的模型。只在某些条件下创建Telerik MVC Grid的DetailView

基于一个列的值,我想创建一个DetailView仅适用于与该列值匹配的行。因此,例如,如果Column“Type”等于Fruit,它将为其创建一个DetailView(带有“+”号)。现在如果“Type”是Vegetable,它不应该创建DetailView(没有“+”号)。

我当前的代码如下所示:

Html.Telerik().Grid<SearchViewModel>(Model) 
     .Name("Search") 
        .Columns(columns => 
        { 
         columns.Bound(o => o.Type).Width(60); 
         //etc. 
        }) 
     //.PrefixUrlParameters(false) 
     .DetailView(detailView => detailView.ClientTemplate(
      "<div>" + 
      "<h5><span>Details for Type:</span></h5><div><#= DetailsType #></div>" + 
      "</div>" 
     )) 

正如你所看到的,我创建的DetailView在我的网格中的每一行。

此外,我发现一个JavaScript隐藏plussign的某些条件,但它不起作用的初始加载(只有在我做了过滤,分页或刷新请求后)。脚本绑定.OnRowDataBound。

function hidePlusSign(e) { 
    var row = e.row; 
    var dataItem = e.dataItem; 

    if (dataItem.Type != "Fruit") { 
     $('a.t-icon', e.row.cells).css('display', 'none'); 

    } 

回答

1

你需要在你的详细视图做的只是添加条件,它是这样的:

"<# if (DetailsType == 'MyType') { #>" +  
    "<div>some html code here</div>" + 
"<# } else { #>" + 
    "<div>another html code here</div>" + 
"<# } #>" + 
+0

那伟大的工作。谢谢。 – Alexander

+0

@亚历山大没问题就问:) –