如何使用客户端对象模型 - Javascript 创建文件夹和子文件夹



我有一个自定义列表表单,我们需要在doc库中创建一个文件夹名称等于列表项标题的文件夹,然后应该立即在该新创建的文件夹中创建3个文件夹。我可以在捕获列表项标题后创建顶级文件夹,但不知道如何在此新创建的文件夹中创建子文件夹。请提供任何意见?

下面显示的代码,适用于创建顶级文件夹。 需要知道,如何添加三个子文件夹。

function retrieveWebSite() {
    var clientContext;
    var oWebsite;
    var oList;
    var itemCreateInfo;
    clientContext = new SP.ClientContext.get_current();
    oWebsite = clientContext.get_web();
    oList = oWebsite.get_lists().getByTitle("Docs");
    itemCreateInfo = new SP.ListItemCreationInformation();
    itemCreateInfo.set_underlyingObjectType(SP.FileSystemObjectType.folder);
    itemCreateInfo.set_leafName("Top Folder");
    this.oListItem = oList.addItem(itemCreateInfo);
    this.oListItem.update();
    clientContext.load(this.oListItem);
    clientContext.executeQueryAsync(
        Function.createDelegate(this, successHandler),
        Function.createDelegate(this, errorHandler)
    );
    function successHandler() {
       alert('success');
    }
    function errorHandler() {
      alert('fail');
    }
}

下面的示例演示如何使用 SharePoint JSON 创建文件夹(包括嵌套文件夹):

var createFolder = function(listTitle, folderUrl,success,error)
{
    var ctx = SP.ClientContext.get_current();
    var list = ctx.get_web().get_lists().getByTitle(listTitle);
    var createFolderInternal = function(parentFolder,folderUrl,success,error)
    {
       var ctx = parentFolder.get_context();
       var folderNames = folderUrl.split('/');
       var folderName = folderNames[0];
       var curFolder = parentFolder.get_folders().add(folderName);
       ctx.load(curFolder);
       ctx.executeQueryAsync(
         function () {
            if (folderNames.length > 1)
            {
               var subFolderUrl = folderNames.slice(1,folderNames.length).join('/');
               createFolderInternal(curFolder, subFolderUrl,success,error);
            }  
            success(curFolder);
         }, 
         error);
    };
    createFolderInternal(list.get_rootFolder(), folderUrl,success,error);
};

用法

假定必须在文档库下创建以下文件夹层次结构:

Archive
   |  
   2014
      |
      07

然后:

createFolder('Documents','Archive/2014/07',
  function(folder){
      console.log(String.format("Folder '{0}' has been created",folder.get_name()));
  },
  function(sender,args){
      console.log(args.get_message());
  });

相关内容

  • 没有找到相关文章

最新更新