使用ClientContext重命名Sharepoint文件夹

时间:2015-01-06 01:29:03

标签: asp.net sharepoint

已经坚持了一段时间。我需要使用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中没有任何操作,这意味着文件夹名称仍然是原始名称。

有什么建议吗?

祝你好运....新年快乐!!!! 爱丽儿

2 个答案:

答案 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

如何使用SharePoint CSOM重命名文件夹

以下示例演示了如何重命名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