1

Ich muss mein SharePoint-Add-In ein Listenelement erstellen lassen. Ich habe die Funktion von der OfficeDev Github-Site here. Wenn ich die Funktion aufruft, schlägt sie in der Zeile fehl, in der "dieses" zuerst erscheint.SharePoint-Add-In-JSOM Listenelementfehler erstellen. "this" ist undefined

Der Fehler ist: Unable Eigenschaft 'oListItem' gesetzt undefinierter oder NULL-Verweis

// line calling the function 
 
createDELListItem(document.getElementById("resultpanel"), uniqueID, "MTD_On_Demand"); 
 

 
// function 
 
function createDELListItem(resultpanel, extractionID, extractionType) { 
 
     var clientContext; 
 
     var oWebsite; 
 
     var oList; 
 
     var itemCreateInfo; 
 

 
     clientContext = new SP.ClientContext.get_current(); 
 
     oWebsite = clientContext.get_web(); 
 
     oList = oWebsite.get_lists().getByTitle("Global_Variable_Store"); 
 

 
     itemCreateInfo = new SP.ListItemCreationInformation(); 
 
     // Line throwing the "null or undefined" error 
 
     this.oListItem = oList.addItem(itemCreateInfo); 
 
     //A guid to send with message that uniquely identifies the list item. 
 
     this.oListItem.set_item("ExtractionID", extractionID); 
 
     //A brief title (description) of the variable set here in this list item. 
 
     this.oListItem.set_item("Extraction Type", extractionType); 
 
     //The Variable name 
 
     this.oListItem.set_item("StartTime", convertThisDate); 
 
     //The process descriptor that set the variable. This is set by the code. 
 
     this.oListItem.update(); 
 

 
     clientContext.load(this.oListItem); 
 
     clientContext.executeQueryAsync(
 
      Function.createDelegate(this, successHandler), 
 
      Function.createDelegate(this, errorHandler) 
 
     ); 
 

 
     function successHandler() { 
 
      resultpanel.innerHTML = "Go to the <a href='../Lists/Global_Variable_Store'>list</a> to see your new item."; 
 
     } 
 

 
     function errorHandler() { 
 
      resultpanel.innerHTML = "Request failed: " + arguments[1].get_message(); 
 
     } 
 
    }

Antwort

2

Es scheint this in Ihrem Fall nicht definiert ist, würde ich das this Schlüsselwort vermeiden Ersetzen der Funktion zum Erstellen eines Listenelements durch:

function addListItem(list,itemProperties,success,error) 
{ 
    var ctx = list.get_context();  
    var itemCreateInfo = new SP.ListItemCreationInformation(); 
    var listItem = list.addItem(itemCreateInfo); 
    for(var name in itemProperties) { 
     listItem.set_item(name, itemProperties[name]) 
    } 
    listItem.update(); 
    ctx.load(listItem); 
    ctx.executeQueryAsync(
     function() { 
      success(listItem);   
     }, 
     error 
    ); 
}  

Verwendung

var properties = { 
     "ExtractionID" : "----", 
     "Extraction Type": "----", 
     "StartTime": "----"    
    }; 
    var ctx = SP.ClientContext.get_current(); 
    var web = ctx.get_web(); 
    var list = web.get_lists().getByTitle("Global_Variable_Store"); 
    addListItem(list,properties, 
     function(contactItem){ 
      console.log('Item has been created successfully'); 
     }, 
     function(sender,args){ 
      console.log('Error occured while creating item:' + args.get_message()); 
    });