SharePoint 2013 - 通过 REST 获取 SPListItem 版本 [英] SharePoint 2013 - Get SPListItem versions via REST

查看:47
本文介绍了SharePoint 2013 - 通过 REST 获取 SPListItem 版本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个启用了版本控制的 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆