2017-03-13 3 views
0

Ich habe viele Informationen zu der oben genannten Frage, aber keine davon hat beantwortet, was ich suche, so weit. Ich versuche, Listenelemente mit einer großen Anzahl von Nachschlagefeldern abzurufen. Ich hatte Erfolg, einige Lookup-Werte zu bekommen, aber keine anderen und ich kann nicht herausfinden, warum. Es scheint auch, dass "Null" -Einträge in den zurückgegebenen Daten nicht akzeptiert werden? Wenn das Nachschlagefeld keinen Wert enthält, wird ein Fehler ausgegeben. Ist das richtig? Unten ist mein Code. Das andere Problem (das große Problem, das in meinem Titel erwähnt wird) ist, dass Lookup-Werte, bei denen ich versuche, etwas anderes als ID oder Titel einzufügen, einen Fehler ausgibt: Verweis nicht gefunden oder initialisiert. In diesem Fall referenziert mein Nachschlagefeld eine Calc-Spalte, die als einzelne Textzeile zurückgegeben wird. Also ist mein Nachschlagefeld Course1Date/DateRange, wobei DateRange den Feldnamen der Calc-Spalte darstellt. Fehler: "Die Eigenschaft oder das Feld wurde nicht initialisiert. Sie wurde nicht angefordert oder die Anforderung wurde nicht ausgeführt. Möglicherweise muss sie explizit angefordert werden."Abrufen von LookupValues, Javascript SharePoint 2013, funktioniert nicht

function getLookupValues(){ 
 
    var clientContext = SP.ClientContext.get_current(); 
 
    var list = clientContext.get_web().get_lists().getByTitle('Lookup'); 
 
    var caml = new SP.CamlQuery(); 
 
    caml.set_viewXml('<View><Query><Where><Geq>' + 
 
       '<FieldRef Name=\'ID\'/><Value Type=\'Number\'>82</Value>' + 
 
       '</Geq></Where></Query><RowLimit>10</RowLimit></View>'); 
 

 
    var returnedItems = list.getItems(caml); 
 
    clientContext.load(returnedItems); 
 
    clientContext.executeQueryAsync(success, failure); 
 
    } 
 
    function success(){ 
 
    var listiteminfo=''; 
 
    var enumerator = returnedItems.getEnumerator(); 
 
    while(enumerator.moveNext()) 
 
    { 
 
     var listItem = enumerator.get_current(); 
 
     if(listItem.get_item('Course1')) { 
 
     var course1 = listItem.get_item('Course1').get_lookupValue(); 
 
     } 
 
     if(listItem.get_item('Course2')) { 
 
     var course2 = listItem.get_item('Course2').get_lookupValue(); 
 
     } 
 
     if(listItem.get_item('Course1Date')) { 
 
     var course1Date = listItem.get_item('Course1Date').get_lookupValue(); 
 
     } //throws error for this lookup field 
 

 
    listiteminfo += '\nCourse1: '+course1+'\nCourse2: '+course2+'\nCourse1Date: '+course1Date; 
 

 
    } 
 
    alert(listiteminfo); 
 
      } 
 
    function failure(){ 
 
    alert("Failed"); 
 
    }

Antwort

0

Sie haben die Felder initialisieren, um Lookup Werte zu erhalten. Ich muss das ListItem im Kontext laden. Und wenn im Nachschlagefeld ein Nullwert vorhanden ist, löst get.lookupValue() eine Ausnahme aus. Überprüfen Sie daher, ob der Feldwert nicht null ist, bevor Sie den Nachschlagewert erhalten. Bitte versuche meine Problemumgehung unten und lass es mich wissen, wenn es funktioniert.

function getLookupValues() { 
     var clientContext = SP.ClientContext.get_current(); 
     var list = clientContext.get_web().get_lists().getByTitle('Lookup'); 
     targetListItem = list.getItemById(82); 
     clientContext.load(targetListItem, 'Title'); 
     clientContext.load(targetListItem, 'Course1'); 
     clientContext.load(targetListItem, 'Course1Date'); 
     clientContext.load(targetListItem, 'Course2'); 
     clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed)); 
    } 
    function onQuerySucceeded() { 
     var resultData = ""; 
     resultData += targetListItem.get_item('Title'); 
     if (targetListItem.get_item('Course1') != null) 
      resultData += targetListItem.get_item('Course1').get_lookupValue(); 
     if (targetListItem.get_item('Course1Date') != null) 
      resultData += targetListItem.get_item('Course1Date').get_lookupValue(); 
     if (targetListItem.get_item('Course2') != null) 
      resultData += targetListItem.get_item('Course2').get_lookupValue(); 
     alert(resultData); 
    } 
    function onQueryFailed(sender, args) { 
     alert('Request failed. \nError: ' + args.get_message() + '\nStackTrace: ' + args.get_stackTrace()); 
    } 
+0

Hallo Naveen, danke für die Antwort. Gibt es eine Möglichkeit, alle Suchfeldwerte in die Abfrage einzubeziehen, abzüglich derer, die Nullwerte enthalten? – JackSki

+0

Ich sollte wahrscheinlich ändern meine Abfrage größer als oder gleich 82. Code aktualisiert, "Geq" 82 – JackSki

+0

Getestet oben, aber es funktioniert nicht. Es funktioniert nur, wenn Sie 1 Element aber nicht mehrere tun. – JackSki

Verwandte Themen