本文介绍了使用Wss或客户端对象模型重命名SharePoint中的文件夹和子文件夹的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我想知道使用客户端对象模型或WSS服务重命名文档库主文件夹或子文件夹的可行性.

I would like to know the feasibility to rename the document library main folder or sub folders by using client Object Model or WSS service.

示例文件夹相对路径:   源文件夹: P1/B1/L1   重命名为:P1/B2/L1

Sample Folder relative path:    Source Folder :  P1/B1/L1     RenameAs: P1/B2/L1

我该怎么办?我将重命名多个级别的文件夹,例如根文件夹或子文件夹.

How could i do it? I will rename multiple levels of folder like either root folder or sub folders.

我正在使用以下代码,但失败了.如果重命名文件夹在另一个文件夹中可用,则说明它正在复制.我该怎么办?

I am using below code but which is failed. If the rename folder is available in another folder then it is duplicating. How can i do it?

参数:字符串[] lstOldFolder,字符串[] lstNewFolder

Parameters:  string[] lstOldFolder, string[] lstNewFolder

使用(ClientContext clientContext = new ClientContext(SiteURL + strParamSiteName +"/")))
                    {
               b clientContext.AuthenticationMode = ClientAuthenticationMode.FormsAuthentication;
               b FormsAuthenticationLoginInfoformsAuthInfo =新的FormsAuthenticationLoginInfo(strUserName,strPassword);
               b clientContext.FormsAuthenticationLoginInfo = FormsAuthInfo;
               b Web Web = clientContext.Web;
               b列表列表= web.Lists.GetByTitle(strParamDocLibName);
               b字符串strFolderTemp = string.Empty;
               b for(int arrindex = 0; arrindex< lstOldFolder.Length; arrindex ++)
               b {
              nbsp; bsp  
              nbsp; bsp    strFolderTemp = ReplaceSpecialCharacter(lstOldFolder [arrindex]);

              nbsp; bsp    CamlQuery查询= new CamlQuery();
              nbsp; bsp    query.ViewXml =< View Scope = \""RecursiveAll \"> " +
              nbsp; bsp                       << Query>" +
              nbsp; bsp                b < Where>" +
              nbsp; bsp               nbsp; bsp    < && gt; +
              nbsp; bsp               nbsp; bsp       < Eq>" +
              nbsp; bsp               nbsp; bsp           < FieldRef Name = \"FSObjType \" />" +
              nbsp; bsp               nbsp; bsp           <值类型= \"整数\> 1</值>" +
              nbsp; bsp               nbsp; bsp        </Eq>" +
              nbsp; bsp               nbsp; bsp         < Eq>" +
              nbsp; bsp               nbsp; bsp           < FieldRef Name = \"FileLeafRef \"/> +              nbsp; bsp ;      
              nbsp; bsp               nbsp; bsp           << Value Type = \"文本\"> + strFolderTemp +</Value>" +
              nbsp; bsp               nbsp; bsp         </Eq>" +
              nbsp; bsp               nbsp; bsp    </&& gt; +
              nbsp; bsp                b </Where>" +
              nbsp; bsp                       </Query>" +
              nbsp; bsp                       </View>;


              nbsp; bsp    query.FolderServerRelativeUrl = strDocLibName;

              nbsp; bsp    var文件夹= list.GetItems(query);

              nbsp; bsp    clientContext.Load(list);
              nbsp; bsp    clientContext.Load(list.Fields);
              nbsp; bsp    clientContext.Load(文件夹,fs => fs.Include(fi => fi [标题"],fi => fi ["FileLeafRef"])));
              nbsp; bsp    clientContext.ExecuteQuery();
              nbsp; bsp  
              nbsp; bsp   如果(folders.Count == 1)
              nbsp; bsp    {
              nbsp; bsp       if(folders [0] ["Title"].ToString()!= lstNewFolder [arrindex] .ToString())
              nbsp; bsp       {
              nbsp; bsp          文件夹[0] [标题"] = lstNewFolder [arrindex];
              nbsp; bsp           folders [0] ["FileLeafRef"] = lstNewFolder [arrindex];
              nbsp; bsp          文件夹[0] .Update();
              nbsp; bsp           clientContext.ExecuteQuery();
              nbsp; bsp       }
              nbsp; bsp    }            &nspb ;   
               b }
                    }

using (ClientContext clientContext = new ClientContext(SiteURL + strParamSiteName + "/"))
                    {
                        clientContext.AuthenticationMode = ClientAuthenticationMode.FormsAuthentication;
                        FormsAuthenticationLoginInfo formsAuthInfo = new FormsAuthenticationLoginInfo(strUserName, strPassword);
                        clientContext.FormsAuthenticationLoginInfo = formsAuthInfo;
                        Web web = clientContext.Web;
                        List list = web.Lists.GetByTitle(strParamDocLibName);
                        string strFolderTemp = string.Empty;
                        for (int arrindex = 0; arrindex < lstOldFolder.Length; arrindex++)
                        {
                           
                            strFolderTemp = ReplaceSpecialCharacter(lstOldFolder[arrindex]);

                            CamlQuery query = new CamlQuery();
                            query.ViewXml = "<View Scope=\"RecursiveAll\"> " +
                                             "<Query>" +
                                                 "<Where>" +
                                                     "<And>" +
                                                         "<Eq>" +
                                                             "<FieldRef Name=\"FSObjType\" />" +
                                                             "<Value Type=\"Integer\">1</Value>" +
                                                          "</Eq>" +
                                                           "<Eq>" +
                                                             "<FieldRef Name=\"FileLeafRef\"/>" +                                
                                                             "<Value Type=\"Text\">" + strFolderTemp + "</Value>" +
                                                           "</Eq>" +
                                                     "</And>" +
                                                  "</Where>" +
                                             "</Query>" +
                                             "</View>";


                            query.FolderServerRelativeUrl = strDocLibName;

                            var folders = list.GetItems(query);

                            clientContext.Load(list);
                            clientContext.Load(list.Fields);
                            clientContext.Load(folders, fs => fs.Include(fi => fi["Title"], fi => fi["FileLeafRef"]));
                            clientContext.ExecuteQuery();
                          
                            if (folders.Count == 1)
                            {
                                if (folders[0]["Title"].ToString() != lstNewFolder[arrindex].ToString())
                                {
                                    folders[0]["Title"] = lstNewFolder[arrindex];
                                    folders[0]["FileLeafRef"] = lstNewFolder[arrindex];
                                    folders[0].Update();
                                    clientContext.ExecuteQuery();
                                }
                            }                            
                        }
                    }

感谢&问候

Poomani Sankaran

Poomani Sankaran

推荐答案

重命名SharePoint库的文件夹.

public static void RenameFolder(this Folder folder,string name)
    {
        var folderItem = folder.ListItemAllFields;
        folderItem["Title"] = name;
        folderItem["FileLeafRef"] = name;
        folderItem.Update();
    }

var folder = ctx.Web.GetFolderByServerRelativeUrl(folderUrl);
folder.RenameFolder("Archive");  //<-set new folder name here
ctx.ExecuteQuery();

这是供您参考的主题.

https://stackoverflow.com/questions/30452012/how-to-get-sharepoint-folder-by-name-using-camlquery

最好的问候,

Lee


这篇关于使用Wss或客户端对象模型重命名SharePoint中的文件夹和子文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 07:46
查看更多