我尝试使用Sharepoint Rest Api创建客户端分页,我使用$ skip和$ top参数:
http://siteurl/_api/lists/getByTitle(list name)/items?$skip=0&$top=2
但是:
http://siteurl/_api/lists/getByTitle(list name)/items?$skip=2&$top=2
我的结果与第一个链接相同
我知道__next url作为回应,但我需要在页面之间进行回复和分页
有没有人有用于解决这个问题的用例?
答案 0 :(得分:1)
SharePoint 2013 / Online中不支持当前$skip
查询选项。
根据Use OData query operations in SharePoint REST requests:
$skip
查询选项不适用于SharePoint查询 列出商品。
使用SharePoint REST接口实现客户端分页有几种选择。
利用$skiptoken
查询选项返回分页结果
格式:$skiptoken=Paged=TRUE&p_ID=<last item id to skip>&$top=<items count>
示例强>
该示例演示了如何从2
库中检索id等于或大于Pages
的有限数量的项目(2项):
function getPagedItems(webUrl,listTitle,startItemId,itemsCount)
{
var endpointUrl = webUrl + "/_api/web/lists/getbytitle('" + listTitle + "')/items?$skiptoken=" + encodeURIComponent('Paged=TRUE&p_SortBehavior=0&p_ID=' + (startItemId-1) + '&$top=' + itemsCount);
return executeRequest(endpointUrl,'GET');
}
getPagedItems('https://contoso.sharepoint.com/','Pages',2,2)
.done(function(data){
if(data.d.results.length == 0){
console.log('Items not found');
return;
}
for(var i = 0; i < data.d.results.length; i++){
var item = data.d.results[i];
console.log(item.Title);
}
});
,其中
function executeRequest(url,method,headers,payload)
{
if (typeof headers == 'undefined'){
headers = {};
}
headers["Accept"] = "application/json;odata=verbose";
if(method == "POST") {
headers["X-RequestDigest"] = $("#__REQUESTDIGEST").val();
}
var ajaxOptions =
{
url: url,
type: method,
contentType: "application/json;odata=verbose",
headers: headers
};
if(method == "POST") {
ajaxOptions.data = JSON.stringify(payload);
}
return $.ajax(ajaxOptions);
}
利用SharePoint 2010 REST界面,使用$skip
查询选项检索分页结果:
端点示例:https://contoso.sharepoint.com/_vti_bin/ListData.svc/Pages?$skip=2&$top=2