1

我正在构建一个带有服务器端分页的 igGrid。网格连接到由 Visual Studio 使用实体框架自动生成的 OData v3 控制器。过滤和排序操作工作正常,但分页不是。

问题似乎是网格将 page=x 和 pageSize=y 放入查询字符串中,但 OData 格式为 $top=x 和 $skip=y。注意仅仅改变names page和pageSize是不够的,因为$skip的值需要是index * pageSize。我尝试了多种编辑控制器以支持 page 和 pageSize 的方法,但无济于事。

我可以在浏览器的地址栏中手动键入具有 $top 和 $skip 的 OData 请求 URL,并获得所需的结果。有没有办法让 Grid 使用 $top 和 $skip?网格本身在 ac# 控制器中定义并作为模型的一部分传递到页面中,因此我注意到我无法访问 GridPaging 对象的 pageIndexUrlKey 和 pageSizeUrlKey 属性。grid.OData 设置为 true。

4

1 回答 1

1

默认情况下,Grid MVC Helper Wrapper 显式设置pageSizeUrlKeypageIndexUrlKey自定义查询参数:pageSizepage。要使其发送 OData 参数,您应该在 JavaScript 中将pageSizeUrlKeyand设置pageIndexUrlKey为 null。将以下代码放在页面底部:

    $(function () {
        $("#grid1").on("iggriddatabinding", function (evt, ui) {
            var features = ui.owner.options.features, i;
            for (var i = 0; i < features.length; i++) {
                if (features[i].name === "Paging") {
                    features[i].pageSizeUrlKey = null;
                    features[i].pageIndexUrlKey = null;
                }
            }
        });
    });

您应该将此代码放在 Grid MVC 配置之前,因为该事件是在创建网格期间触发的,您应该在创建网格之前绑定到它。

于 2016-11-09T14:34:38.757 回答