我正在使用服务器端分页构建一个igGrid。网格连接到由Visual Studio使用Entity Framework自动生成的OData v3控制器。筛选和排序操作工作正常,但分页不是。
问题似乎是网格将page = x和pageSize = y放入查询字符串中,但OData格式为$ top = x和$ skip = y。请注意,仅更改名称页面和pageSize是不够的,因为$ skip的值必须是index * pageSize。我已经尝试了多种编辑控制器的方式来支持page和pageSize,但无济于事。
我可以手动输入功能$ top和$ skip的OData请求网址到浏览器的地址栏中,然后获得想要的结果。有没有办法让Grid使用$ top和$ skip?网格本身在c#控制器中定义,并作为模型的一部分传递到页面中,我注意到因为我无法访问GridPaging对象的pageIndexUrlKey和pageSizeUrlKey属性。 grid.OData设置为true。
答案 0 :(得分:1)
默认情况下,Grid MVC Helper Wrapper会将pageSizeUrlKey
和pageIndexUrlKey
明确设置为自定义查询参数:pageSize
和page
。要使其发送OData参数,您应该在JavaScript中将pageSizeUrlKey
和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 Configuration之前,因为在创建网格期间会触发该事件,您应该在创建网格之前绑定它。