0

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

我的 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
}

谁能指出我如何强制网格重新绑定的正确方向?很感谢任何形式的帮助 :)

4

2 回答 2

1

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

function unit_onDetailViewExpand(e){
    $(e.detailRow).find('.t-grid').data().tGrid.ajaxRequest();
}
于 2012-11-14T19:53:29.407 回答
0

就在我发布这个问题之后,我很快就与我交谈了(出于某种奇怪的原因)。我设法用这个循环强制刷新网格:

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

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

于 2012-11-13T10:40:54.540 回答