我正在尝试在网站的博客上找到有关使用JavaScript和REST在SharePoint中创建图表的代码。原始文章可以在此处找到参考 - http://www.cardinalsolutions.com/blog/2013/05/building_charts_ins-我已经尝试与作者联系,请寻求帮助,但我还没有得到帮助响应。
"use strict";
var EngagementChartBuilder = window.EngagementChartBuilder || {};
//The module for executing a REST query
EngagementChartBuilder.RESTQuery = function (listTitle, query) {
var execute = function (listTitle, query) {
var restUrl = _spPageContextInfo.webServerRelativeUrl +
"/_api/web/lists/getByTitle('" + listTitle + "')/items";
if (query != "") {
restUrl = restUrl + "?" + query;
}
var deferred = $.ajax({
url: restUrl,
type: "GET",
headers: {
"accept": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val()
}
});
return deferred.promise()
};
return {
execute: execute
}
}();
但是,当该代码执行时,由于SharePoint的分页,它仅返回前100个结果。我发现了我指向使用数据的方向的文章/帖子。
我以为我可以做一个循环,但我真的没有取得任何进展。
任何帮助都将不胜感激。预先感谢。
您可以将$top
和$skip
参数添加到您的端点URL(在您的情况下为restUrl
字符串),以指定要检索多少个项目以及要跳过多少个项目。
使用
$skip=n
参数根据$orderby
参数跳过第一个n
条目使用
$top=n
参数根据$orderby
和$skip
参数返回顶部n
条目。
要通过结果页面,您只需要更新$skip
代币并需要。
以下示例以1000的批量获取项目:
var endpointUrl = "/_api/lists('guid')/items";
$.getJSON(
endpointUrl + "?$orderby=Id&$top=1000",
function(data){
processData(data); // you can do something with the results here
var count = data.d.results.length;
getNextBatch(count, processData, onComplete); // fetch next page
}
);
function getNextBatch(totalSoFar, processResults, onCompleteCallback){
$.getJSON(
endpointUrl + "?$orderby=Id&$skip="+totalSoFar+"&$top=1000",
function(data){
var count = data.d.results.length;
if(count > 0){
processResults(data); // do something with results
getNextBatch(totalSoFar+count, callback); // fetch next page
}else{
onCompleteCallback();
}
}
);
}
将该概念与jQuery延期集成是另一回事。
我推荐您:
- 花一些时间来了解jQuery延期中封装的功能,以便您可以有效地使用它们或
- 放弃完全递延,只使用您自己的异步功能带有回调,如文档示例 中
$ skip在SharePoint 2013/SharePoint Line odata REST 中不起作用。
SharePoint REST API响应中有一个属性,名为" __ Next ",您可以用来实现分页。
此链接包含" $ skiptoken ",这对于分页很有用。
我认为您应该尝试实现以下方式:
-
使用$ filter->
/_ api/web/lists/getByTitle( listTitle )/项目?$ filter = id GT { dureatskipfrom }/strong>}
-
使用" __ Next "链接。可以将其访问为" response.d .__ Next "
如果它具有值,则包含将返回下一组项目的URL。如果是空的,则您已经达到了结果集的结尾
请参阅将指导您的链接:https://sharepoint.stackexchange.com/questions/74777/list-api-get-get-all-items-limited-to-100-rows