Telerik MVC Grid Ajax具有手动绑定function

我有一个使用ajax获取数据的Telerik MVC Grid,我想控制何时加载它。

这是我视图中的代码:

@(Html.Telerik().Grid() .Name("UserActionLoggingFollowedGrid") .DataBinding(dataBinding => dataBinding.Ajax().Select("SelectUserActionLogging", "Report", new { userTeamId = Model.UserTeamId, startDate = Model.StartDate, endDate = Model.EndDate }).OperationMode(GridOperationMode.Client)) .Columns(columns => { columns.Bound(x => x.FullName).Hidden(); columns.Bound(x => x.ActionName); columns.Bound(x => x.ActionCount); }) .Pageable(page => page.PageSize(20)) .Sortable() .Groupable(grouping => grouping.Groups(groups => groups.Add(c => c.FullName)).Visible(false)) .Filterable() .Localizable("fr-FR") .HtmlAttributes(new { @class = "grid-style static-grid-style" }) .ClientEvents(e => e.OnError("Grid_onServerError").OnDataBinding("Grid_onDataBinding").OnDataBound("Grid_onDataBound")) ) 

默认情况下,此代码可以正常工作。 加载页面时,网格会自动向服务器发送指定操作的发布请求,并使用返回的数据加载自身。

我想要的是具有相同行为但在加载页面时没有加载数据的相同网格; 我希望在用户单击按钮或任何其他操作时加载网格。

我发现了一些有趣的post,说明如何手动刷新网格,但没有人指定如何防止网格的初始绑定。

这件小作品适合我。 添加数据绑定客户端事件(显然您已经拥有):

 .ClientEvents(events => events .OnDataBinding("preventAjaxSelectOnPageLoad")) 

然后创建添加此javascript:

  

基本上,您创建一个数组来跟踪需要绑定的网格。 当页面加载时,数组将为空 – 此时,它取消数据绑定事件并将网格添加到数组。 然后在下次调用ajaxRequest()时,网格存在于数组中并且可以正常绑定。

我认为您可以为网格的DataBinding或DataBound事件添加处理程序,并检查它是否是该页面的第一次加载。 如果是这样,请使用e.preventDefault()以避免调用服务器。

其他选项可能是从Grid声明中删除ajax绑定,并使用dataBind方法自行完成