2012-06-27 75 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

@亞歷山大沒問題就問:) –