SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




SP2010 - CEWP - Lookupfeldwerte von anderen Listen mit Javascript ausgeben lassen

Geprüfte Antwort Dieser Beitrag hat 3 Antworten

Ohne Rang
282 Beiträge
MStel erstellt 24 Mai 2018 09:43
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,
ich möchte mit Javascript in einem Content Editor Webpart die Lookupwerte meiner Listenspalten auslesen und in einem alert ausgeben.

Ich habe die Liste Personen und die Liste Sprachen.
Personen hat eine Spalte für den Name, (NamePerson), die Lookupspalte test, welche testhalber auf die eigene ID verweist und die Lookupspalte "Sprachen", welche auf die Liste Sprachen und deren Feld "Sprachen" verweist.

Führe ich folgenden Code mit meiner test-lookupspalte aus, erhalte ich aus dem Alert die gewünschten Werte korrekt im alert ausgegeben.
Ersetze ich an den Orten, wo ich test verwendet habe das test durch die Sprachen, erhalte ich eine Fehlermeldung "Das Objekt unterstützt die Methode get_lookupValue() nicht"

Ich habe die internen Feldnamen überprüft, um sicherzustellen dass es nicht daran liegt und mir die Objekte auch mal im IE mit F12 angesehen.
Den einzigen Unterschied den ich zwischen den beiden Lookupfeldern diagnostizieren kann, ist dass die funktionierende Spalte "test" auf die eigene Liste verweist und die nicht funktionierende Spalte "Sprachen" auf eine andere.

Was müsste ich tun, um die gewünschte Funktionalität auch mit der anderen Liste zu erhalten?

Hier mein Code: (habe ihn aufs nötigste begrenzt)

<script type="text/javascript">
ExecuteOrDelayUntilScriptLoaded(init,'sp.js');
function init()
{
var clientContext = new SP.ClientContext.get_current();
var list = clientContext.get_web().get_lists().getByTitle("Personen");
var viewXml = '<View><RowLimit>1200</RowLimit></View>';
var query = new SP.CamlQuery();
query.set_viewXml("");
this.items = list.getItems(query);
clientContext.load(items, 'Include(NamePersonen, test, Sprachen)');
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), null);
}
function onQuerySucceeded() {
var tasksEntries = [];
var itemsCount = items.get_count();
for (i = 0; i < itemsCount; i++)
{
var item = items.itemAt(i);
var taskEntry = item.get_fieldValues();
tasksEntries.push(taskEntry);
}
alert(tasksEntries[0].test.get_lookupValue()); // Klappt
//alert(tasksEntries[0].Sprachen.get_lookupValue()); // Klappt nicht
}
</script>

Vielen Dank im Voraus!

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 24 Mai 2018 11:28
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="MStel"]erhalte ich eine Fehlermeldung "Das Objekt unterstützt die Methode get_lookupValue() nicht"[/quote]

Gibt es denn überhaupt ein Objekt oder ist das vielleicht für dieses item einfach null? Und falls es doch vorhanden ist, was ist es denn für ein Objekt? Das sollte sich alles im Debugger rausfinden lassen.

Ansonsten kann ich da auch nicht weiterhelfen...

Edit: der Feldname "Sprachen" (Plural) deutet daraufhin, daß es vielleicht ein Lookup mit Mehrfachauswahl ist. In dem Fall ist der Feldwert ein Array von Lookupwerten, die man ebenfalls wieder mit einer Schleife durchgehen muß.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
496 Beiträge
Derby Als Antwort am 24 Mai 2018 13:19
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Sind beide Spalten "echte" Lockup (Nachschlage-)spalten doer ist Test ein "normales" Auswahlfeld?

Ohne Rang
282 Beiträge
MStel Als Antwort am 24 Mai 2018 14:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Andi hat es mal wieder erraten. Dass es ein Multiple Choice lookup field ist, ist die Ursache dafür, dass ich nicht per get_lookupValue an die Daten komme.

Folgender Code hat funktioniert.

var taskEntry = item.get_fieldValues();
    var values = item.get_item('Sprachen');
    for (var m = 0 ; m < values.length ; m ++ )
    {
        var tempValue = values[m];

        var value = tempValue.get_lookupValue();

// ALERT
    }