2017-10-29 1 views
0

Kann mir jemand sagen, wie Sie mehrere SharePoint-Listenelemente im Batch mithilfe von CSOM-Code erstellen können.So erstellen Sie Sharepoint-Listenelemente im Stapel mit dem Csom-Code

ich auf die Batch-Erstellung beziehe mich CSOM Code auf ähnliche Verwendung auf den Code unten .. Im Folgenden Code ist in Server-Objektmodell ich das gleiche in CSOM erreichen wollen ..

Region [Methode: Batch-Liste hinzufügen Artikel Details]

public void AddCanteenMenuDetails(string lstName, List<CanteenMenuDetails> objCanteenMenuDetails) 
    { 
     StringBuilder sbInsertCanteenMenu = new StringBuilder(); 
     sbInsertCanteenMenu.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><Batch>"); 
     using (SPSite site = new SPSite(SPContext.Current.Site.Url)) 
     { 
      using (SPWeb web = site.OpenWeb()) 
      { 
       SPList lstCanteenMenu = web.Lists.TryGetList(lstName); 
       bool allowUnsafeUpdates = web.AllowUnsafeUpdates; 
       web.AllowUnsafeUpdates = true; 
       web.Update(); 
       foreach (CanteenMenuDetails item in objCanteenMenuDetails) 
       { 
        sbInsertCanteenMenu.AppendFormat("<Method ID=\"{0}\">" + 
              "<SetList>{1}</SetList>" + 
              "<SetVar Name=\"ID\">New</SetVar>" + 
              "<SetVar Name=\"Cmd\">Save</SetVar>" + 
              "<SetVar Name=\"{3}Title\">{2}</SetVar>" + 
              "<SetVar Name=\"{3}Location\">{4}</SetVar>" + 
              "<SetVar Name=\"{3}WeekDays\">{5}</SetVar>" + 
        "</Method>", item.Title, lstCanteenMenu.ID, item.Title, "urn:schemas-microsoft-com:office:office#", item.LocationID, item.WeekDays); 
       } 
       sbInsertCanteenMenu.Append("</Batch>"); 
       web.ProcessBatchData(sbInsertCanteenMenu.ToString()); 
       web.AllowUnsafeUpdates = allowUnsafeUpdates; 
       web.Update(); 
      } 
     } 
    } 
    #endregion 

Antwort

1

Sie können es versuchen, wie unten CSOM C#:

var list = context.Web.Lists.GetByTitle("CustomList"); 

for (var i = 0; i < 100; i++) 
{ 
    ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation(); 
    ListItem oListItem = list.AddItem(itemCreateInfo); 

    oListItem["Title"] = "My New Item " + i.ToString(); 
    oListItem["Description"] = "Test description"; 
    oListItem.Update(); 
}     


context.ExecuteQuery(); 

Wenn Sie JSOM (der JavaScript-Code) verwenden möchten, können Sie es wie unten verwenden:

var itemArray = []; 
var clientContext = SP.ClientContext.get_current(); 
var oList = clientContext.get_web().get_lists().getByTitle('CustomList'); 

for(var i = 0; i< 100; i++){ 

    var itemCreateInfo = new SP.ListItemCreationInformation(); 
    var oListItem = oList.addItem(itemCreateInfo); 
    oListItem.set_item('Title', 'New Item ' + i); 
    oListItem.set_item('Description', 'Test desc'); 
    oListItem.update(); 
    itemArray[i] = oListItem; 
    clientContext.load(itemArray[i]); 
} 

clientContext.executeQueryAsync(function(){ 
    console.log("success"); 
}, function(){ 
    console.log("error"); 
}); 

Bitte ändern Sie nach Namen Namen und interne Spaltennamen.

Referenz - Batch operations using javascript

aktualisieren - modifiziert pro Kommentare

foreach (CanteenMenuDetails item in objCanteenMenuDetails) 
{ 

    ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation(); 
    ListItem oListItem = list.AddItem(itemCreateInfo); 

    oListItem["Title"] = item.Title; 
    oListItem["Location"] = item.LocationID; 
    oListItem["WeekDays"] = item.WeekDays; 
    oListItem.Update(); 

} 
context.ExecuteQuery(); 
+0

ich meine Kommentare in der oben genannten Post aktualisiert haben Sie bitte, dass verweisen .. – user17274

+0

er bereits beantwortet Ihre Frage. Aktualisieren Sie sie einfach anhand einiger der Werte, die Sie in Ihrem ursprünglichen Code haben. –