我尝试使用我在网站上发现的有关使用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个结果。我发现文章/帖子指出了我在URL下面使用data.d .__并重新运行AJAX查询的方向,但是试图理解这个JavaScript代码真的让我头晕目眩。
我以为我可以做一个do-while循环,但我真的没有取得任何进展。
任何帮助都会非常感激。提前谢谢。
答案 0 :(得分:0)
您可以将$top
和$skip
参数添加到端点网址(在您的情况下为restUrl
字符串),以指定要检索的项目数和分别跳过的项目数。
根据$skip=n
参数
n
参数跳过第一个$orderby
条目
使用$top=n
参数根据n
和$orderby
参数返回热门$skip
条目。
要翻阅结果,您只需更新$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延迟集成是另一回事。
我建议你:
答案 1 :(得分:0)
$ skip在SharePoint 2013 / SharePoint系列OData REST 中无效。
SharePoint REST API响应中有一个名为“ __ next ”的属性,您可以使用该属性来实现分页。
此链接包含“ $ skiptoken ”,这对于分页很有用。
我认为您应该尝试以下方式实施:
使用$ filter - >
/ _ api / web / Lists / GetByTitle( ListTitle )/ items?$ filter = Id gt {{strong> valueSkipFrom }&amp; $ top = { ValueTop < /强>}
使用“ __ next ”链接。这可以通过“ response.d .__ next ”
进行访问如果它有值,则它包含将返回下一组项目的URL。如果它为null,则表示已达到结果集的末尾
请参阅以下链接:https://sharepoint.stackexchange.com/questions/74777/list-api-get-all-items-limited-to-100-rows