SharePoint 2013 - 通过 REST 获取 SPListItem 版本 [英] SharePoint 2013 - Get SPListItem versions via REST
问题描述
我有一个启用了版本控制的 SharePoint 2013 列表.我需要通过 REST 获取 SPListItem 版本列表.我可以通过该请求获取 SPListItem:http://spbreportportal/Projects/_api/lists/getbytitle('Projects')/Items(1)
但我无法在文档中找到如何检索该项目的所有版本.可能吗?
I have a SharePoint 2013 List with versioning enabled.
I need to to get SPListItem versions list via REST.
I can get SPListItem by that request: http://spbreportportal/Projects/_api/lists/getbytitle('Projects')/Items(1)
But I can't find in documentation and in response how to retrieve all versions of this item.
Is it possible?
推荐答案
似乎无法通过 REST/CSOM API 获取 List Item
的版本,但有替代选项
It does not seem possible to get versions for a List Item
via REST/CSOM APIs, but there are alternative options
想法是对版本页面执行获取请求:http://<server>/<site>/_layouts/versions.aspx?list={litsID}&ID=<itemID>
The idea is to perform a get request to Versions page: http://<server>/<site>/_layouts/versions.aspx?list={litsID}&ID=<itemID>
function getItemVersions(url,listId,itemId,success)
{
var versionsUrl = url + '/_layouts/versions.aspx?list=' + listId + '&ID=' + itemId;
$.get( versionsUrl, function( data ) {
var versionEntries = parseVersionList(data);
success(versionEntries);
});
}
function parseVersionList(data){
var entries = {};
var versionList = $(data).find('table.ms-settingsframe');
versionList.find('tbody > tr').each(function(i){
if(i > 0 && (i-1) % 2 == 0) {
var verRow = $(this); //get version row
var propsRow = verRow.next(); //get properties row
var versionLabel = verRow.find('td:first').html().trim();
entries[versionLabel] = {};
//extract item properties from propsRow goes here
//...
}
});
return entries;
}
//Usage
var webUrl = _spPageContextInfo.webAbsoluteUrl;
var listId = _spPageContextInfo.pageListId;
var listItemId = 1;
getItemVersions(webUrl,listId,listItemId,function(versionEntries){
console.log(versionEntries);
});
使用列表 SharePoint Web 服务
另一种选择是利用公开 Lists.GetVersionCollection 方法 返回 SharePoint 列表中指定字段的版本信息
Using Lists SharePoint Web Services
Another option would be to utilize Lists SharePoint Web Services that exposes Lists.GetVersionCollection Method to return version information for the specified field in a SharePoint list
SPServices 示例:
$().SPServices({
operation: "GetVersionCollection",
async: false,
strlistID: "Projects",
strlistItemID: 1,
strFieldName: "Description",
completefunc: function (xData, Status) {
$(xData.responseText).find("Version").each(function(i) {
console.log("Name: " + $(this).attr("Description") + " Modified: " + $(this).attr("Modified"));
});
}
});
这篇关于SharePoint 2013 - 通过 REST 获取 SPListItem 版本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!