Search code examples
sharepointsharepoint-2016

Sharepoint 2016 on-premise details Item Version field informations


I am working on SharePoint 2016 CSOM to get list item version history. unfortunately i am not getting the field values. please find the code below.

       var file = item.File;
            var versionFiles = file.Versions;
            var fa = file.ListItemAllFields;

            clientContext.Load(fa);
            clientContext.Load(file);
            clientContext.Load(versionFiles);
            clientContext.ExecuteQuery();


            if (null != versionFiles)
            {
                var fileVersion = file.Versions[5];
                SP.File oldFile =web.GetFileByServerRelativeUrl("/sites/site/_vti_history/1234/list1/file1.pdf");
                var allField = oldFile.ListItemAllFields;
                clientContext.Load(allField);


             }

Solution

  • You could get version history metadata from Lists.asmx.

    Sample code:

    var web = clientContext.Web;
                    List spList = clientContext.Web.Lists.GetByTitle("MyDoc");                
                    var item = spList.GetItemById(43);
                    clientContext.Load(spList);
                    clientContext.Load(item);
                    clientContext.ExecuteQuery();
    
                    #region customList
                    Lists.Lists listService = new Lists.Lists();
                    listService.Credentials = System.Net.CredentialCache.DefaultCredentials;
    
                    listService.Url = siteUrl + "/_vti_bin/lists.asmx";
                    XmlNode nodeAttachments = listService.GetVersionCollection(spList.Id.ToString(), item.Id.ToString(), "Title");
    
                    foreach (System.Xml.XmlNode xNode in nodeAttachments)
                    {
                        Console.WriteLine(xNode.Attributes["Title"].Value);
                    }