SharePoint 2010 REST顶部,在大型列表上跳过失败



我在SharePoint 2010网站中创建了两个列表。一个有10个项目,另一个有10000个项目。

在小名单上,我可以说

http://mysharepoint.com/sites/testsite/_vti_bin/listdata.svc/SmallList?$top=1&跳过=1

没问题,它运行得很完美。

当我说时

http://mysharepoint.com/sites/testsite/_vti_bin/listdata.svc/LargeList?$top=1&跳过=1

它抛出一个错误"处理此请求时发生错误"

互联网上充满了困惑,因为大多数博客/文章等都在谈论"SP2013",我想你从SP得到的XML正文中有一个__next。

然而,我使用的是SP2010,这是一个完全没有服务器端对象模型的PURE客户端解决方案。

有人能告诉我如何在SP2010的大列表中"特别"分页吗。

请发布一些带有rest命令的工作URL。。。。您已经针对一个大列表进行了测试(如果您需要我提供代码,为您创建一个10K项目的大列表,请告诉我)。

您可以使用JavaScript和WebServices来完成此操作。使用我创建的名为SharepointPlus的JavaScriptneneneba API库,您必须这样做(3.0.7版):

$SP().list("Name of your list").get({fields:"ID,Title",rowlimit:5000,paging:true},function(data) {
  console.log(data.length)
})

您将把所有项目都放入"data"数组中。例如,您可以遍历数组,并在JavaScript循环中到达X元素时停止。就像这样,你不应该因为你的列表太大而收到错误消息。

不支持$skip查询选项,但$top是。

解决方法是,在ID上混合使用$orderby、在ID上使用$filter和$top x项,然后循环。

您的查询变成http://mysharepoint.com/sites/testsite/_vti_bin/listdata.svc/LargeList()$orderby=Id&filter=Id gt{lastId}&顶部=100

{lastId}=0。

循环找到的项,跟踪"Last Id"并将其传递给下一个查询。

http://mysharepoint.com/sites/testsite/_vti_bin/listdata.svc/LargeList()$orderby=Id&filter=Id gt 0&顶部=100

http://mysharepoint.com/sites/testsite/_vti_bin/listdata.svc/LargeList()$orderby=Id&filter=Id gt 123&顶部=100

http://mysharepoint.com/sites/testsite/_vti_bin/listdata.svc/LargeList()$orderby=Id&filter=Id gt 345&顶部=100

重复。

注1:ID是一个总是被索引的列,其他

注2:此模式也适用于REST API(LINQ查询)

最新更新