Telerik的MVC电网Ajax和手动绑定(Telerik MVC Grid Ajax with

2019-09-20 06:40发布

我有一个Telerik的MVC网格使用Ajax获得的数据,我想什么时候会被加载到控制。

这是我认为的代码:

@(Html.Telerik().Grid<ViewModels.Reports.UserActionLoggingDetailViewModel>()
          .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请求到服务器指定的操作,并返回DATAS负载本身。

我要的是同一个网格,相同的行为,但没有加载网页时加载的数据; 我想,当用户点击一个按钮或任何其它操作要加载的网格。

我发现了一些有趣的职位指示如何手动刷新网格,但没有人规定如何防止电网的初始绑定。

Answer 1:

这小片为我工作。 添加数据绑定客户端事件(你已经有了,显然):

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

然后创建添加此javascript:

<script type="text/javascript">

    var gridsToBind = [];

    function preventAjaxSelectOnPageLoad(e)
    {
        if ($.inArray(e.target.id, gridsToBind) == -1)
        {
            e.preventDefault();
            gridsToBind.push(e.target.id);
        }
    }
</script>

基本上,你创建一个数组来保持跟踪需要绑定的网格。 页面加载时,数组将是空的 - 在这一点上,它取消了数据绑定事件并添加网格阵列。 然后在下一次ajaxRequest()被调用时,所述阵列中的网格存在,并且可以正常的约束。



Answer 2:

我认为,你可以添加一个处理数据绑定或数据绑定事件的网格,并检查它是否是页面的第一个负载那里。 如果是这样,使用e.preventDefault(),以避免拨打电话到服务器。

其他选项可能是删除了ajax从电网声明绑定,并使用自己来做DataBind方法



文章来源: Telerik MVC Grid Ajax with manually binding