我在另一个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
}
任何人都可以指出我如何强制进行重绘吗? 非常感谢任何帮助:)
答案 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:)