我有一个自定义列表表单,我们需要在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());
});