sharepoint 版本问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sharepoint 版本问题相关的知识,希望对你有一定的参考价值。
最近公司上司要我了解关于sharepoint 产品的一些东西,现在我最想知道的东西有这几个:
1、sharepoint 除了微软公司有出品以外,还有没有其他公司出品的sharepoint,也就是不是OFFIC系列的sharepoint
2、sharepoint 有哪些版本
3、这些版本如果购买的话各需要多少钱
请这方面的达人能够帮我解惑,谢谢
2.SP 03\07\10
3. 版本和Feature不一样,价格不一, 从4000美元-50000美元不等。 参考技术A 1.有一些合作伙伴在SharePoint上做了一些解决方案。相似的产品没有。
2.现在只卖SPS2010,大概还是分企业版和标准版
3.License购买上,Server的价格是一样的,不同的是客户端的Cal,标准版和企业版客户端的Cal的价格不同。数量上,Server的数量看你怎么部署,客户端的数量取决于多少用户。
SharePoint 2013 - 通过 REST 获取 SPListItem 版本
【中文标题】SharePoint 2013 - 通过 REST 获取 SPListItem 版本【英文标题】:SharePoint 2013 - Get SPListItem versions via REST 【发布时间】:2014-08-16 21:37:39 【问题描述】:我有一个启用了版本控制的 SharePoint 2013 列表。
我需要通过 REST 获取 SPListItem 版本列表。
我可以通过该请求获得 SPListItem:http://spbreportportal/Projects/_api/lists/getbytitle('Projects')/Items(1)
但我在文档中找不到如何检索该项目的所有版本。
有可能吗?
【问题讨论】:
【参考方案1】:似乎无法通过 REST/CSOM API 获取 List Item
的版本,但有其他选择
使用Versions.aspx
申请页面
这个想法是对版本页面执行获取请求: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 Method 的 Lists SharePoint Web Services 返回 SharePoint 列表中指定字段的版本信息
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"));
);
);
【讨论】:
有什么快速的方法来循环遍历所有项目/所有版本?如果任何版本的选择字段更改为设置值,我们希望报告当前版本。 据我所知,在这两种方法中,版本信息只能按项目检索 @VadimGremyachev 我正在尝试使用您的建议从版本历史记录页面获取详细信息,但在 var versionList = $(data).find('table.ms-settingsframe'); 行出现错误我收到错误作为无效字符 我收到一条错误消息,提示“项目不存在。它可能已被其他用户删除”【参考方案2】:注意:这在 2013 年似乎不起作用。我已经在 SharePoint Online 中验证了它的工作原理,它可能在 2016 年以上工作,但我尚未验证后者。
自最初发布此问题以来,情况可能已经改变,但现在可以使用 REST API 获取任何列表/库项目的版本历史记录:
https://url/to/site/_api/web/Lists/getbytitle('MyListName')/items(ITEMID)/versions
这将返回当前版本和所有过去版本的一系列结果,以及每个版本中项目的列值。
与其他 REST 端点一样,您可以使用$select
、$filter
等来进一步操作结果。
【讨论】:
在我的 SharePoint 2013 服务器上不起作用。您能否详细说明可用的 SharePoint 版本是什么? @JoaoSilva 这在 SharePoint Online 中对我有用。事实上,这似乎在 2013 年不起作用,我没有注意到这个问题是关于 2013 年的。我没有 2016 年的环境可以尝试这个。 这只会返回版本元数据,而不是记录值 @Oxossi 它返回记录值对我来说很好。您使用的是什么版本的 SharePoint? 我正在使用 SharePoint Online。请问你用的是什么版本? ...您是否从 /versions 取回先前的项目内容详细信息(即超出版本号等)?【参考方案3】:在 REST API 中,您可以选择属性 OData__UIVersionString
。它还支持OData__ModerationStatus
例如:
GET http://site url/_api/web/lists/GetByTitle(‘Test')/items(item id)?$select=OData__UIVersionString,OData__ModerationStatus
更多信息:https://msdn.microsoft.com/en-us/library/office/dn292552.aspx
这不是获取所有版本或特定版本的解决方案,而是有关版本的更多信息。
【讨论】:
这适用于获取项目的当前版本,但不适用于该版本或以前版本的内容。【参考方案4】:添加到@Vadim Gremyachev 使用“GetversionCollection”的优秀答案:也可以使用老式 SOAP 访问此接口。不幸的是,它一次只返回一个字段(所以我们使用了很多调用......)。 C# sn-p 如下。
//https://blogs.msdn.microsoft.com/pinch-perfect/2016/06/04/sharepoint-web-services-read-version-history-for-column-changes/
//http://www.indy.gov/eGov/City/DCE/Permits/Signs/_vti_bin/lists.asmx?op=GetVersionCollection
//https://www.codeproject.com/Articles/26338/Using-the-GetListItems-GetVersionCollection-and-Up
string strSite =
string strListGuid =
string strListItemID =
string strFieldName = "Title" // or some other field name
string requestXML = "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>" +
"<soap:Body>" +
"<GetVersionCollection xmlns='http://schemas.microsoft.com/sharepoint/soap/'>" +
"<strlistID>"+ strListGuid + "</strlistID><strlistItemID>" + strListItemID + "</strlistItemID>" +
"<strFieldName>"+ strFieldName +"</strFieldName>" +
"</GetVersionCollection>" +
"</soap:Body>" +
"</soap:Envelope>";
object xmlRequestObj = Activator.CreateInstance(Type.GetTypeFromProgID("Microsoft.XMLHTTP"));
MSXML2.XMLHTTP xmlRequest = (MSXML2.XMLHTTP)xmlRequestObj;
xmlRequest.open("Get", strSite + "/_vti_bin/Lists.asmx", false, null, null);
xmlRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/GetVersionCollection");
xmlRequest.send(requestXML);
string responseText = xmlRequest.responseText;
【讨论】:
【参考方案5】:要添加有关如何从 SharePoint 列表中获取所有版本历史记录的更多信息:
//Get ID of the Dossier in SP list
strID = items(i - 1).getAttribute("ows_ID")
Debug.Print strID
//Get all Versions of the ID in SP list as a XML
URL1: https://path to site collection/_vti_bin/owssvr.dll?Cmd=Display&List=LIstID&XMLDATA=TRUE&Query=*&IncludeVersions=TRUE
XDoc3.Load (URL1 & "&FilterField1=ID&FilterOp1=eq&FilterValue1=" & strID)
Set Item = XDoc3.SelectNodes("//rs:data/*")
Set temp3 = XDoc3.SelectNodes("//rs:data/*")
【讨论】:
以上是关于sharepoint 版本问题的主要内容,如果未能解决你的问题,请参考以下文章
Sharepoint 2010/2013 文档库 - 文档版本控制
使用 Web 服务从 SharePoint 下载文件的特定版本
SharePoint 2013 - 通过 REST 获取 SPListItem 版本
Sharepoint 2010/2013 文档库 - 基于元数据访问旧版本的文档