【问题标题】:How can I get list items by view name, using REST API ajax?如何使用 REST API ajax 按视图名称获取列表项?
【发布时间】:2020-03-16 20:27:37
【问题描述】:
我尝试按视图名称从 Sharepoint 库中获取项目列表。我有 ajax REST API URL:
url: webapp + "_api/web/list/getbytitle" + "('" + LibraryName + "')/View/getbytitle" +"('" + viewName + "')"
method:"GET"
header:"Accept":"application/json;odata=verbose
如何获取视图名称中的所有项目?
【问题讨论】:
标签:
sharepoint-2013
sharepoint-rest-api
【解决方案1】:
请参考以下代码 sn-p 从特定视图获取项目,Rest API 不是提供者项目端点直接从视图返回。
所以请执行以下操作:
- 使用 SP.View.viewQuery 属性执行第一个请求以获取列表视图的 CAML 查询
-
通过指定 CAML 查询执行第二个检索列表项的请求:
getListItemsForView(_spPageContextInfo.webAbsoluteUrl,'MyList12','View1')
.done(function(data)
{
var items = data.d.results;
for(var i = 0; i < items.length;i++) {
console.log(items[i].Title);
}
})
.fail(
function(error){
console.log(JSON.stringify(error));
});
function getListItemsForView(webUrl,listTitle,viewTitle)
{
var viewQueryUrl = webUrl + "/_api/web/lists/getByTitle('" + listTitle + "')/Views/getbytitle('" + viewTitle + "')/ViewQuery";
return getJson(viewQueryUrl).then(
function(data){
var viewQuery = data.d.ViewQuery;
return getListItems(webUrl,listTitle,viewQuery);
});
}
function getJson(url)
{
return $.ajax({
url: url,
type: "GET",
contentType: "application/json;odata=verbose",
headers: {
"Accept": "application/json;odata=verbose"
}
});
}
function getListItems(webUrl,listTitle, queryText)
{
var viewXml = '<View><Query>' + queryText + '</Query></View>';
var url = webUrl + "/_api/web/lists/getbytitle('" + listTitle + "')/getitems";
var queryPayload = {
'query' : {
'__metadata': { 'type': 'SP.CamlQuery' },
'ViewXml' : viewXml
}
};
return $.ajax({
url: url,
method: "POST",
data: JSON.stringify(queryPayload),
headers: {
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"Accept": "application/json; odata=verbose",
"content-type": "application/json; odata=verbose"
}
});
}
这里已经回答了同样的问题:
Using REST to fetch SharePoint View Items