编程方式获得使用ListItemVersion客户端对象模型的SharePoint 2010 [英] Programmatically get ListItemVersion using client object model SharePoint 2010

查看:343
本文介绍了编程方式获得使用ListItemVersion客户端对象模型的SharePoint 2010的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一种情况,我必须将我所有的数据在SharePoint 2010列表(NAME =VersionTestList)到SQL Server数据库。由于版本控制列表中的启用,我想移动previous版本的详细信息了。反正我是能够将最新的产品,但遗憾的是我没能拿到previous版本数据。我曾尝试使用客户端对象模型,并能获得的版本,但没能得到的对应版本的列表项。请从下面的code,我现在已经尝试过,直到给我一只手在解决这一点。

此外,我走的是列表项的版本是这样的:

 字符串路径= web.ServerRelativeUrl +/Lists/VersionTestTable/1_.000;
文件fil​​e = 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屋!

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