SPFolder.MoveTo is preserving the metadata for the sub-folders while reset the metadata for the root folder

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/274502

Pergunta

I have the following console application, which moved some folders from one document library to another within the same SP 2013 site collection:-

 SPList sourceomslist = omsWeb.Lists.TryGetList("Order Management");
                        ;
   foreach (SPListItem currentItem in sourceomslist.Items)
          {

            if (currentItem["Status"].ToString() == "Closed")
                {

                             if (currentItem.ContentType.Name.ToLower().Contains("project"))
                       {
                         Console.WriteLine(currentItem["ID"]);
                         SPFolder folder = omsWeb.GetFolder(omsWeb.ServerRelativeUrl + "/Shared Documents/"+currentItem["ID"].ToString() );
                         folder.MoveTo(omsWeb.ServerRelativeUrl + "/ArchDocs/"+currentItem["ID"].ToString() );

                       }
               }

         }

now the MoveTo will preserve the metadata for the sub-folders and files, but it will reset the metadata for the roots folders that are been moved. So can anyone advice if i can force the MoveTo method to preserve the metadata data for the root folders that are been moved?

Thanks

Foi útil?

Solução

You need update folder metadata for the root folders after run the MoveTo method, modify the code as below.

if (currentItem.ContentType.Name.ToLower().Contains("project"))
{
    Console.WriteLine(currentItem["ID"]);
    SPFolder folder = omsWeb.GetFolder(omsWeb.ServerRelativeUrl + "/Shared Documents/"+currentItem["ID"].ToString());
    var modified = folder.Item["Modified"];
    var created = folder.Item["Created"];    
    folder.MoveTo(omsWeb.ServerRelativeUrl + "/ArchDocs/" + currentItem["ID"].ToString());
    SPFolder tfolder = omsWeb.GetFolder(omsWeb.ServerRelativeUrl + "/ArchDocs/" + currentItem["ID"].ToString());
    tfolder.Item["Created"] = created;
    tfolder.Item["Modified"] = modified;
    tfolder.Item.UpdateOverwriteVersion();
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top