微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 具有手动绑定功能的Telerik MVC Grid Ajax

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

这是我视图中的代码

@(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"))
        )

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

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

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

解决方法:

这件小件对我有用.添加数据绑定客户端事件(显然您已经拥有):

.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()时,网格存在于数组中并且可以正常绑定.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐