在DetailView上强制Telerik Grid MVC刷新扩展

时间:2012-11-13 10:30:33

标签: javascript jquery asp.net-mvc-3 telerik telerik-mvc

我在另一个Telerik网格中有一个嵌套的Telerik网格,我想强制网格在父网格的每次扩展时刷新自己。嵌套网格中的数据可以快速更改,因此我需要嵌套网格在每次展开事件时刷新自己。

我的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 unit_onDetailViewExpand(e) {
    var mstRow = e.masterRow;
    var unitNumber = mstRow.cells[1].innerHTML;
    var grid = $(this).data('tGrid');
    grid.$rows().not(e.masterRow).each(function(index, row) {
        grid.collapseRow(row);
    });   

    //I´ve been trying to force databinding on the grid row
    grid.expandRow(e.row);
    //I´ve been trying this among others but I´m missing something
}

任何人都可以指出我如何强制进行重绘吗? 非常感谢任何帮助:)

2 个答案:

答案 0 :(得分:1)

这样您可以重新绑定页面上的所有网格。要仅刷新详细信息行内部的Grid,可以使用DetailExpand事件中的以下逻辑来查找Grid获取其客户端对象并使用ajaxRequest方法。

function unit_onDetailViewExpand(e){
    $(e.detailRow).find('.t-grid').data().tGrid.ajaxRequest();
}

答案 1 :(得分:0)

我很快就接受了采访,就在我发布这个问题后,答案就出现了(由于一些奇怪的原因)。我设法用这个循环强制网格刷新:

        for (var i = 0; i < 6; i++) {
        $('#' + i + 'UnitPeriod_' + unitNumber + ' .t-refresh').trigger('click');
    }

我用上面的循环替换了这行grid.expandRow(e.row)。无论如何,Thanx:)