问题描述
大家好,
我想知道使用客户端对象模型或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中的文件夹和子文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!