Monday, 3 August 2020

SharePoint programmatically move a splistitem to another folder in the same list

My customer requests moving list items to sub folders keeping item id. Most of articles talk about moving document files instead of list items. Second problem, Moving item from GUI recreate new item with new item id.
Below code solving my problem moving item to new folder keeping the same id:

            var securePassword = new SecureString();
            foreach (char c in password)
            {
                securePassword.AppendChar(c);
            }
            using (var clientContext = new ClientContext(siteurl))
            {
                clientContext.Credentials = new SharePointOnlineCredentials(userName, securePassword); 
                Web web = clientContext.Web;
                clientContext.Load(web,a=>a.ServerRelativeUrl); 
                clientContext.ExecuteQuery();
                List list = clientContext.Web.Lists.GetByTitle(listname);
                ListItem items = list.GetItemById(itemid);
                clientContext.Load(items,item => item.Id, item => item["FileLeafRef"],item=>item["FileDirRef"],item => item["FileRef"]);
                clientContext.ExecuteQuery();
                var itemasfile = web.GetFileByServerRelativeUrl(items["FileRef"].ToString());
                //targetfolderpath sample "Lists/ListName/FolderDestination" ;
                string targetfilepath = items["FileRef"].ToString().Replace(items["FileDirRef"].ToString(), targetfolderpath);
                itemasfile.MoveTo(targetfilepath, MoveOperations.Overwrite);
                clientContext.ExecuteQuery();
            }

No comments:

Post a Comment

Change docker images and containers location with Windows 10

Docker with windows has 2 mode windows and linux (wsl) For Windows Mode: Docker Configuration File: By default, Docker stores Images and ot...