编程方式获得使用ListItemVersion客户端对象模型的SharePoint 2010 [英] Programmatically get ListItemVersion using client object model SharePoint 2010
问题描述
我有一种情况,我必须将我所有的数据在SharePoint 2010列表(NAME =VersionTestList)到SQL Server数据库。由于版本控制列表中的启用,我想移动previous版本的详细信息了。反正我是能够将最新的产品,但遗憾的是我没能拿到previous版本数据。我曾尝试使用客户端对象模型,并能获得的版本,但没能得到的对应版本的列表项。请从下面的code,我现在已经尝试过,直到给我一只手在解决这一点。
此外,我走的是列表项的版本是这样的:
字符串路径= web.ServerRelativeUrl +/Lists/VersionTestTable/1_.000;
文件file = web.GetFileByServerRelativeUrl(路径);
clientContext.Load(文件,项目=> item.ListItemAllFields);
FileVersionCollection版本= file.Versions;
clientContext.Load(版本);
oldVersions = clientContext.LoadQuery(versions.Where(V =>!V = NULL));
clientContext.ExecuteQuery();
我的整个code是这样的:
类节目
{
静态无效的主要(字串[] args)
{
GetVersionsUsingCOM();
}
公共静态无效GetVersionsUsingCOM()
{
档案文件;
FileVersionCollection版本;
IEnumerable的< Microsoft.SharePoint.Client.FileVersion> oldVersions;
ClientContext clientContext =新ClientContex(HTTP://服务器:1200 /测试/ POC);
网络网络= clientContext.Web;
clientContext.Load(网络);
clientContext.ExecuteQuery();
字符串路径= web.ServerRelativeUrl +/Lists/VersionTestTable/1_.000;
文件= web.GetFileByServerRelativeUrl(路径);
clientContext.Load(文件,项目=> item.ListItemAllFields);
//clientContext.ExecuteQuery();
版本= file.Versions;
clientContext.Load(版本);
oldVersions = clientContext.LoadQuery(versions.Where(V =>!V = NULL));
clientContext.ExecuteQuery();
如果(oldVersions!= NULL)
{
的foreach(在oldVersions Microsoft.SharePoint.Client.FileVersion _version)
{
诠释计数= 0;
Console.WriteLine(_version.CheckInComment);
Console.WriteLine(版本:{0},_version.VersionLabel);
////工作正常,直到这里,但无法从version.Url版本细节
字符串versionItemUrl = web.ServerRelativeUrl +/+ _version.Url;
文件的oldfile = web.GetFileByServerRelativeUrl(versionItemUrl);
clientContext.Load(oldfile目录,F => f.ListItemAllFields);
clientContext.ExecuteQuery();
Console.WriteLine(oldFile.ListItemAllFields [名称]);
算上++;
}
oldVersions = NULL;
}
到Console.ReadLine();
}
}
我不得不使用 Web客户端
来下载吧 - 看到此SharePoint堆叠交换链接的here
I have a scenario where I have to move all my data in a SharePoint 2010 list (name= "VersionTestList") to a SQL server database. Since versioning is enabled in the list, I want to move the previous version details too. Anyway I was able to move the latest item, but unfortunately I am not able to get the previous version data. I have tried this using Client Object Model and able to get the versions, but not able to get the ListItem of that corresponding version. Please find below the code which I have tried till now and give me a hand in resolving this.
Also, I am taking the version of the ListItem like this:
string path = web.ServerRelativeUrl + "/Lists/VersionTestTable/1_.000";
File file = web.GetFileByServerRelativeUrl(path);
clientContext.Load(file, item=>item.ListItemAllFields);
FileVersionCollection versions = file.Versions;
clientContext.Load(versions);
oldVersions = clientContext.LoadQuery(versions.Where(v => v != null));
clientContext.ExecuteQuery();
My entire code is like this:
class Program
{
static void Main(string[] args)
{
GetVersionsUsingCOM();
}
public static void GetVersionsUsingCOM()
{
File file;
FileVersionCollection versions;
IEnumerable<Microsoft.SharePoint.Client.FileVersion> oldVersions;
ClientContext clientContext = new ClientContex("http://server:1200/test/Poc");
Web web = clientContext.Web;
clientContext.Load(web);
clientContext.ExecuteQuery();
string path = web.ServerRelativeUrl + "/Lists/VersionTestTable/1_.000";
file = web.GetFileByServerRelativeUrl(path);
clientContext.Load(file, item=>item.ListItemAllFields);
//clientContext.ExecuteQuery();
versions = file.Versions;
clientContext.Load(versions);
oldVersions = clientContext.LoadQuery(versions.Where(v => v != null));
clientContext.ExecuteQuery();
if (oldVersions != null)
{
foreach (Microsoft.SharePoint.Client.FileVersion _version in oldVersions)
{
int count=0;
Console.WriteLine(_version.CheckInComment);
Console.WriteLine("Version : {0}", _version.VersionLabel);
//// Working fine till here but unable to get the version details from version.Url
string versionItemUrl = web.ServerRelativeUrl +"/" + _version.Url;
File oldFile = web.GetFileByServerRelativeUrl(versionItemUrl);
clientContext.Load(oldFile, f=>f.ListItemAllFields);
clientContext.ExecuteQuery();
Console.WriteLine(oldFile.ListItemAllFields["Name"]);
count++;
}
oldVersions = null;
}
Console.ReadLine();
}
}
I had to use the WebClient
to download it - see this SharePoint Stack Exchange link here
这篇关于编程方式获得使用ListItemVersion客户端对象模型的SharePoint 2010的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!