仅在特定条件下为Telerik MVC Grid创建DetailView

时间:2012-06-27 05:19:24

标签: c# asp.net-mvc grid telerik

我知道有关条件DetailView的问题,但我觉得这不是我想要的。我一直在搞乱Telerik Grid for MVC,我已经设法为我的网格中的行创建了一个DetailView。事情是截至目前,我的DetailView充满了HTML代码,我想在里面有一个新的模型。

基于一列值,我想仅为匹配该列值的行创建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 个答案:

答案 0 :(得分:1)

您需要做的只是在详细视图中添加条件,它看起来像这样:

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