1

条件付き DetailView について質問があることは知っていますが、それは私が探しているものではないと感じています。私は MVC 用の Telerik Grid をいじっていましたが、グリッド内の行の DetailView を作成することができました。現在のところ、私の DetailView は HTML コードで満たされているため、内部に新しいモデルを作成したいと考えています。

1 つの列の値に基づいて、その列の値に一致する行に対してのみ 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 を見つけましたが、初期ロードでは機能しません (フィルタリング、ページング、または更新要求を行った後のみ)。スクリプトは .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');

    }
4

1 に答える 1

1

詳細ビューに条件を追加するだけで、次のようになります。

"<# if (DetailsType == 'MyType') { #>" +    
    "<div>some html code here</div>" +
"<# } else { #>" +
    "<div>another html code here</div>" +
"<# } #>" +
于 2012-06-27T05:49:08.980 に答える