2012-06-27 1 views
1

Я знаю, что есть вопрос об условном DetailView, однако я считаю, что это не то, что я ищу. Я возился с сетью Telerik для MVC, и мне удалось создать DetailView для моих строк в моей сетке. Дело в том, что на данный момент мой DetailView заполнен HTML-кодом, и я хочу иметь новую модель внутри.Создать DetailView для сетки Telerik MVC только при определенных условиях

Основываясь на одном столбце, я хочу создать DetailView только для строк, соответствующих этому значению столбцов. Так, например, если столбец «Тип» равен Плоду, он должен создать DetailView для него (с знаком «+»). Теперь, если «Тип» - растительный, он не должен создавать 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

@Alexander Нет проблем просто спросить :) –

Смежные вопросы