创建项目或文件夹

创建列表项

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());
    });
}

上面的示例演示了通过执行以下操作创建列表项:

  1. 调用列表对象的 addItem 方法以获取项目对象
  2. 在结果列表项对象上调用 set_item 方法以根据需要设置每个字段值
  3. 在列表项对象上调用 update 方法以指示要提交更改
  4. 调用客户端上下文对象的 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());});
}