已经坚持了一段时间。我需要使用ClientContext重命名SharePoint文件夹。我创建了一个像这样的函数:
Public Function renameFolder(_folders As ListItemCollection, _newFolderName As String) As Boolean
Try
Using _clientContext As New ClientContext(vSharepointSite)
AddHandler _clientContext.ExecutingWebRequest, AddressOf vClaimsHelper.clientContext_ExecutingWebRequest
Dim _folder = _folders(0)
_folder.Item("Title") = _newFolderName
_folder.Item("FileLeafRef") = _newFolderName
_folder.Item("DisplayName") = _newFolderName
_folder.Update()
_clientContext.ExecuteQuery()
End Using
Return True
Catch ex As Exception
Return False
End Try
End Function
此函数采用文件夹集合(实际上我只传递1个文件夹的集合)和新文件夹名称。该功能执行良好。在_folder
之后检查ExecuteQuery
,一切看起来都符合预期。但是,SharePoint中没有任何操作,这意味着文件夹名称仍然是原始名称。
有什么建议吗?
祝你好运....新年快乐!!!! 爱丽儿
答案 0 :(得分:2)
确保List Item
(示例中为_folder
变量)与 Folder
对象相关联。
List Item
是否与Folder
对象Using ctx As New ClientContext(webUrl)
Dim list = ctx.Web.Lists.GetByTitle(listTitle)
Dim item = list.GetItemById(itemId)
ctx.Load(item.Folder)
ctx.ExecuteQuery()
Dim isFolderItem = Not item.Folder.ServerObjectIsNull.Value
End Using
以下示例演示了如何重命名Folder
:
Public Sub RenameFolder(folder As Folder, folderName As String)
Dim ctx = folder.Context
Dim folderItem = folder.ListItemAllFields
folderItem("FileLeafRef") = folderName
folderItem("Title") = folderName
folderItem.Update()
ctx.ExecuteQuery()
End Sub
用法
Using ctx As New ClientContext(webUrl)
Dim folder = ctx.Web.GetFolderByServerRelativeUrl(folderUrl)
RenameFolder(folder, "Orders")
End Using
答案 1 :(得分:0)
使用BaseName
字段重命名文件夹。
_folder.Item("BaseName") = _newFolderName