获取 SharePoint 列表中一行的所有版本
Get all the version of a row in a SharePoint list
我正在尝试读取网站上列表的所有版本并存储它们。我想对整行而不是逐列(或逐项)执行此操作。我在这里看到了 https://sharepoint.stackexchange.com/questions/137360/how-to-get-all-major-versions-of-list-or-library-item-using-c
但无法理解它,因为 oList、items 和 listItem 的 none 没有 "Version" 属性。我在 SharePoint 中为我的列表启用了版本控制。下面是我在 C# 中的代码。
using (ClientContext clientContext = new ClientContext("https://domain.sharepoint.com/sites/mysite"))
{
SecureString passWord = new SecureString();
foreach (char c in "mypass".ToCharArray()) passWord.AppendChar(c);
clientContext.Credentials = new SharePointOnlineCredentials("email@domain", passWord);
Web web = clientContext.Web;
clientContext.Load(web);
clientContext.ExecuteQuery();
CamlQuery query = new CamlQuery();
query.ViewXml = @"";
SP.List oList = clientContext.Web.Lists.GetByTitle("listname");
clientContext.Load(oList);
clientContext.ExecuteQuery();
SP.ListItemCollection items = oList.GetItems(query);
clientContext.Load(items);
clientContext.ExecuteQuery();
foreach (ListItem listItem in items)
{
foreach (KeyValuePair<string, object> dictitem in listItem.FieldValues)
{
//Read this key, value and save them in a datatable
}
}
}
使用 SharePoint SDK v16 和 items.Versions 购买,我收到以下错误:
Error CS1061 'ListItemCollection' does not contain a definition
for 'Versions' and no accessible extension method 'Versions' accepting a
first argument of type 'ListItemCollection' could be found (are you missing
a using directive or an assembly reference?)
您可以使用 ListItem.Versions 属性 获取项目的所有版本:
https://docs.microsoft.com/en-us/dotnet/api/microsoft.sharepoint.client.listitem.versions
foreach (ListItem listItem in items)
{
ListItemVersionCollection itemversioncollection = listItem.Versions;
clientContext.Load(itemversioncollection);
clientContext.ExecuteQuery();
}
另外,尽可能使用最新版本的 SharePoint SDK。
在这里评论,因为当我搜索解决方案时弹出了这个答案。另一个Whosebug答案中已经有解决方案。该答案也适用于 SP13。
它基于使用:
"https://<server>/<site>/_layouts/versions.aspx?list={litsID}&ID=<itemID>"
请看SharePoint 2013 - Get SPListItem versions via REST
我正在尝试读取网站上列表的所有版本并存储它们。我想对整行而不是逐列(或逐项)执行此操作。我在这里看到了 https://sharepoint.stackexchange.com/questions/137360/how-to-get-all-major-versions-of-list-or-library-item-using-c 但无法理解它,因为 oList、items 和 listItem 的 none 没有 "Version" 属性。我在 SharePoint 中为我的列表启用了版本控制。下面是我在 C# 中的代码。
using (ClientContext clientContext = new ClientContext("https://domain.sharepoint.com/sites/mysite"))
{
SecureString passWord = new SecureString();
foreach (char c in "mypass".ToCharArray()) passWord.AppendChar(c);
clientContext.Credentials = new SharePointOnlineCredentials("email@domain", passWord);
Web web = clientContext.Web;
clientContext.Load(web);
clientContext.ExecuteQuery();
CamlQuery query = new CamlQuery();
query.ViewXml = @"";
SP.List oList = clientContext.Web.Lists.GetByTitle("listname");
clientContext.Load(oList);
clientContext.ExecuteQuery();
SP.ListItemCollection items = oList.GetItems(query);
clientContext.Load(items);
clientContext.ExecuteQuery();
foreach (ListItem listItem in items)
{
foreach (KeyValuePair<string, object> dictitem in listItem.FieldValues)
{
//Read this key, value and save them in a datatable
}
}
}
使用 SharePoint SDK v16 和 items.Versions 购买,我收到以下错误:
Error CS1061 'ListItemCollection' does not contain a definition
for 'Versions' and no accessible extension method 'Versions' accepting a
first argument of type 'ListItemCollection' could be found (are you missing
a using directive or an assembly reference?)
您可以使用 ListItem.Versions 属性 获取项目的所有版本:
https://docs.microsoft.com/en-us/dotnet/api/microsoft.sharepoint.client.listitem.versions
foreach (ListItem listItem in items)
{
ListItemVersionCollection itemversioncollection = listItem.Versions;
clientContext.Load(itemversioncollection);
clientContext.ExecuteQuery();
}
另外,尽可能使用最新版本的 SharePoint SDK。
在这里评论,因为当我搜索解决方案时弹出了这个答案。另一个Whosebug答案中已经有解决方案。该答案也适用于 SP13。
它基于使用:
"https://<server>/<site>/_layouts/versions.aspx?list={litsID}&ID=<itemID>"
请看SharePoint 2013 - Get SPListItem versions via REST