找回密码
 立即注册

QQ登录

只需一步,快速开始

nutstore
金牌服务用户   /  发表于:2021-6-4 10:55  /   查看:5180  /  回复:9
100金币
本帖最后由 nutstore 于 2021-6-4 11:07 编辑

我们使用了odata协议加载数据,用了 ODataVirtualCollectionView 控件,结果每次都是固定取100条数据,设置了 pageSize 也没什么用。

我们希望能够控制这个数量,要怎么做呢?

另外,如果我们想一次性加载所有的数据,要怎么做呢?

最佳答案

查看完整内容

你好,我这里测试了一下,pageSize:10,设置时可以起效的,你可以参考这个demo https://demo.grapecity.com.cn/wijmo/demos/Grid/Data-binding/ODataAPI/purejs 在这里设置测试看看 正常情况下,不设置pageSize时就不会分页。你说的一次取到了100条数据,如果不是全部数据的话,可以看看Odata服务端是否已经进行了分页

9 个回复

正序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-7-9 11:53:55
10#
本帖最后由 Richard.Ma 于 2021-9-23 11:16 编辑

您好,此问题的原因是新版本功能进行了调整。出于性能考虑最小的分页数是100,此参数目前没有提供对外的接口来调整。由于我们的中文在线demo用的还是稍早版本20191,因此没有能重现问题。如果您这边的需求确实是需要更小的分页的话,可以对源代码中的_MIN_DATA_WINDOW进行修改,此参数没有和其他的功能关联。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
nutstore
金牌服务用户   /  发表于:2021-7-9 10:25:14
9#
我们尝试了开源数据源,还是一样的,然后我去查了下你们的代码,其中有一句:
  1. e.$top = Math.max(this._end - this._start + 1, this.pageSize, _MIN_DATA_WINDOW)
复制代码

_MIN_DATA_WINDOW 是 100,我们遇到的情况应该跟这行代码有关系,但是代码混淆过了,我也无从判断具体是什么配置没写对还是什么原因。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-28 18:04:37
8#
嗯,我明天会再找找看有没有第三方的odata源来测试一下看看,您那边也可以尝试一下
回复 使用道具 举报
nutstore
金牌服务用户   /  发表于:2021-6-28 17:52:55
7#
Richard.Ma 发表于 2021-6-28 17:11
我看到你用的是ODataVirtualCollectionView,
https://demo.grapecity.com.cn/wijmo/demos/Grid/Data-bind ...

是的,我在你们的demo网站上测试过,确实可以正常工作,但是到我们的项目里,也是同样的设置,但是结果却不一样,这一块还涉及到服务器的接口,而且我们这个项目现在外部不太方便访问,确实没办法给出demo。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-28 17:11:38
6#
我看到你用的是ODataVirtualCollectionView,
https://demo.grapecity.com.cn/wi ... VirtualOData/purejs
在这个页面我也测试了一下,给virtualDetails设置后,请求的是按照20来增加的,你这边能否提供一个重现问题的示例,



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
nutstore
金牌服务用户   /  发表于:2021-6-28 16:33:34
5#
Richard.Ma 发表于 2021-6-4 10:55
你好,我这里测试了一下,pageSize:10,设置时可以起效的,你可以参考这个demo
https://demo.grapecity.co ...

你好,我们在项目中,尝试了设置 pageOnServer: true, pageSize: 20 但是,每次发往服务器的请求参数还是top=100。
我们的代码:
  1.     const oDataView = new wjcOData.ODataVirtualCollectionView(
  2.       `/task/api/odata-report/${templateId}`,
  3.       'data',
  4.       {
  5.         oDataVersion: 4.0,
  6.         pageSize: 20,
  7.         pageOnServer: true,
  8.         sortOnServer: true,
  9.         filterOnServer: true,
  10.         loaded: () => {
  11.           setIsDataEmpty(oDataView.isEmpty)
  12.         },
  13.       },
  14.     )
复制代码

最终发出去的请求参数:$format=json&$count=true&$skip=201&$top=100
这个跟服务器应该没什么关系,能帮忙看看是哪里有问题吗?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-4 14:53:28
4#
好的 ,有其他的问题欢迎发新帖咨询
回复 使用道具 举报
nutstore
金牌服务用户   /  发表于:2021-6-4 14:44:17
3#
Richard.Ma 发表于 2021-6-4 11:11
你好,我这里测试了一下,pageSize:10,设置时可以起效的,你可以参考这个demo
https://demo.grapecity.co ...

哦哦 好的,可能我们后端实现方面有点问题,demo上确实可以设置成功。
回复 使用道具 举报
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-4 10:55:20
来自 2#
你好,我这里测试了一下,pageSize:10,设置时可以起效的,你可以参考这个demo
https://demo.grapecity.com.cn/wi ... ing/ODataAPI/purejs
在这里设置测试看看


正常情况下,不设置pageSize时就不会分页。你说的一次取到了100条数据,如果不是全部数据的话,可以看看Odata服务端是否已经进行了分页

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部