在动态生成列表项时(使用 NAPA)将多个列表项添加到列表中

adding more than one list item into List at a time when the items are generated dynamically (using NAPA)

本文关键字:列表 添加 使用 动态 NAPA      更新时间:2023-09-26

我正在使用下面的代码将一个项目插入到列表中。

    function createitem() {
     var selectListBox = document.getElementById("txtFormName");
     var selectedListTitle = selectListBox.value;
     var selectedList = web.get_lists().getByTitle(selectedListTitle);
     var listItemCreationInfo = new SP.ListItemCreationInformation();
     var newItem = selectedList.addItem(listItemCreationInfo);
     newItem.set_item('Title','abc');
     newItem.update();
     context.load(newItem);
     context.executeQueryAsync(onItemCreationSuccess, onItemCreationFail);
     }

它工作正常。现在我想使用

    newItem.set_item('Title1','def');
    newItem.set_item('Title2','xyz');
    .
    .
    .
    and so on

in 循环,用于插入同一行中的多个项目。我怎样才能做到这一点。请指导。

由于 SharePoint CSOM API 支持请求批处理,因此以下示例演示如何使用对服务器的单个请求创建多个列表项:

function createListItem(context,listTitle,itemProperties)
{
    var web = context.get_web();
    var list = web.get_lists().getByTitle(listTitle);
    var itemCreateInfo = new SP.ListItemCreationInformation();
    var listItem = list.addItem(itemCreateInfo);
    for(var propName in itemProperties) {
       listItem.set_item(propName, itemProperties[propName]) 
    }
    listItem.update();
    return listItem;
}

//Usage
var contactItems = [];
var context = new SP.ClientContext.get_current();
var contactProperties  = {'Title': 'Doe','FirstName': 'John'};
//1.Prepare multiple list items
for(var i = 0; i < 16; i++) {
   var contactItem = createListItem(context,'Contacts',contactProperties);
   contactItems.push(contactItem);
}   
//2. Submit request to the server to create list items
context.executeQueryAsync(
      function() {
          console.log(contactItems.length + ' contacts have been created');        
      },
      function(sender, args) {
        console.log(args.get_message());
      }
   );

要点:

  • 列表项创建操作在单个中提交到服务器使用SP.ClientContext.executeQueryAsync方法请求