1

それらの1つを展開するときに他のすべての行を折りたたむようにjavascriptを強制しようとしています。一度に1つの行を展開したままにしたいだけです。私はjavascriptにかなり慣れていないので、誰かが私を正しい方向に向けてくれることを願っています.

私が見つけたこの例を調べましたが、何らかの理由でコードが行を折りたたまない: グリッド内のすべての DetailViews を展開/折りたたむ

JavaScript で行っているように、インデックスを折りたたむべきではありませんか?

MVC Razor ビューの私の Telerik グリッド:

<div>
@(Html.Telerik().Grid<RentableUnit>()
           .Name("RentableUnits")
           .Columns(columns =>
                        {
                            columns.Bound(e => e.UnitID).Hidden();
                            columns.Bound(e => e.Name).Width(800);
                            columns.Bound(e => e.IsExpanded).Hidden();
                        })
           .ClientEvents(events => events.OnRowDataBound("employees_onRowDataBound")
                                       .OnDetailViewExpand("unit_onDetailViewExpand")
                                       .OnDetailViewCollapse("unit_onDetailViewCollapse")
                                       .OnDetailViewExpand("toggleDetail")
                                       )
           .DetailView(details => details.ClientTemplate(
               //stuff in template
           )
    .DataBinding(dataBinding => dataBinding.Ajax().Select("RentableUnits", "Home"))
    .Sortable()
)
</div>

私のJavascript:

    function toggleDetail(e) {
        var grid = $(this).data('tGrid');
        grid.$rows().each(function (index) {
            //TODO: exclude the expanded row
            grid.collapseRow(index); //doesn´t collapse!
    });
}
4

1 に答える 1

3

これはトリックを行います:

function toggleDetail(e){

  var grid = $(this).data('tGrid');
  grid.$rows().not(e.masterRow).each(function(index, row){
    grid.collapseRow(row);
  });
}

OnDetailViewExpand イベントに対して 2 つのハンドラーが定義されていることに注意してください。

于 2012-11-07T12:37:42.773 に答える