创建项目或文件夹
创建列表项
SP.SOD.executeOrDelayUntilScriptLoaded(createItem,"sp.js");
function createItem(){
var clientContext = new SP.ClientContext();
var list = clientContext.get_web().get_lists().getByTitle("List Title");
var newItem = list.addItem();
newItem.set_item("Title","Example Title");
newItem.update();
clientContext.load(newItem); // only needed to retrieve info from newly created item
clientContext.executeQueryAsync(function(){
var itemId = newItem.get_item("ID");
alert("Item #"+itemId+" Created Successfully!");
},function(sender,args){
alert(args.get_message());
});
}
上面的示例演示了通过执行以下操作创建列表项:
- 调用列表对象的
addItem
方法以获取项目对象 - 在结果列表项对象上调用
set_item
方法以根据需要设置每个字段值 - 在列表项对象上调用
update
方法以指示要提交更改 - 调用客户端上下文对象的
executeQueryAsync
方法来执行排队的指令
注意,你不会需要新的项目对象传递给客户端上下文的 load
方法来创建项目。只有在你希望从服务器检索任何项目的字段值时,才需要执行该步骤。
创建文件夹
创建文件夹类似于将项目添加到列表中。不同之处在于必须首先创建一个 ListItemCreationInformation
对象并将其 underlyingObjectType
属性设置为 SP.FileSystemObjectType.folder
,并将其 leafName
属性设置为新文件夹的所需名称。
然后,该对象作为库中 addItem
方法的参数传递,以创建该文件夹。
// ...
var itemCreateInfo = new SP.ListItemCreationInformation();
itemCreateInfo.set_underlyingObjectType(SP.FileSystemObjectType.folder);
itemCreateInfo.set_leafName(folderName);
var newItem = list.addItem(itemCreateInfo);
// ...
要提交更改,请调用通过其访问库的 ClientContext
对象的 executeQueryAsync
方法。
下面的完整示例创建一个文件夹,其名称基于当前时间戳,然后在模式对话框中打开该文件夹。
SP.SOD.executeOrDelayUntilScriptLoaded(createFolder,"sp.js");
function createFolder(){
var now = new Date();
var timeStamp = now.getYear() + "-" + (now.getMonth()+1) + "-" + now.getDate()
+ "T" + now.getHours()+"_"+now.getMinutes()+" "+now.getSeconds()+"_"+now.getMilliseconds();
var clientContext = new SP.ClientContext();
var list = clientContext.get_web().get_lists().getByTitle("Library Title");
var itemCreateInfo = new SP.ListItemCreationInformation();
itemCreateInfo.set_underlyingObjectType(SP.FileSystemObjectType.folder);
itemCreateInfo.set_leafName(timeStamp);
var newItem = list.addItem(itemCreateInfo);
newItem.update();
clientContext.load(newItem);
var rootFolder = list.get_rootFolder(); // Note: use a list's root folder to determine its server relative URL
clientContext.load(rootFolder);
clientContext.executeQueryAsync(function(){
var itemId = newItem.get_item("ID");
var name = newItem.get_item("FileLeafRef");
SP.UI.ModalDialog.showModalDialog(
{
title: "Folder \""+name+"\" (#"+itemId+") Created Successfully!",
url: rootFolder.get_serverRelativeUrl() + "/" + name
}
);
},function(sender,args){alert(args.get_message());});
}