【发布时间】:2016-09-22 20:55:47
【问题描述】:
我正在构建一个带有服务器端分页的 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?网格本身在 c# 控制器中定义并作为模型的一部分传递到页面中,我注意到因此我无法访问 GridPaging 对象的 pageIndexUrlKey 和 pageSizeUrlKey 属性。 grid.OData 设置为 true。
【问题讨论】:
-
默认情况下,分页应该使用 $top 和 $skip 发送 OData 查询字符串。你能发布你的 igGrid 配置吗?
-
GridModel grid = new GridModel(); grid.EnableUTCDates = true; grid.ID = "membersGrid"; grid.FixedHeaders = false; grid.DefaultColumnWidth = "100px"; #region [ 分页 ] GridPaging 分页 = 新 GridPaging(); paging.Type = OpType.Remote;分页.PageSize = 10; paging.CurrentPageIndex = 0; paging.PageSizeList = new List
{ 10, 25, 50, 100 }; grid.Features.Add(分页); #endregion grid.DataSourceUrl = "/odata/viewMemberBalances"; grid.ResponseDataKey = "值"; grid.OData = true; -
感谢您的回复。这是让网格使用正确的查询字符串参数,但是仍然存在 2 个问题:1)当页面首次加载时,网格使用 page 和 pageSize 查询参数进行调用,这导致显示每条记录,直到页面大小由用户更改。 2) 查询字符串缺少 $inlinecount=allpages 参数,因此我的控制器不会告诉网格还有更多条目,并且只向用户显示 1 页。我已经确认手动将 $inlinecount=allpages 添加到查询字符串会返回计数。
-
我更新了代码示例以解决这两个问题。
标签: odata infragistics ignite-ui iggrid