【问题标题】:Force Telerik Grid MVC refresh on DetailView expand在 DetailView 上强制 Telerik Grid MVC 刷新 expand
【发布时间】:2012-11-01 18:51:29
【问题描述】:

我在另一个 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
}

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • Thanx @XMR,这是一种更简单的方法,并且更简洁地使用 find() 函数。我仍在学习 javascript 世界的方法;)
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-31
      • 2012-10-23
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多