建立專案或資料夾
建立列表項
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());});
}