SharePointCommunity
Die deutschsprachige Community für SharePoint, Office 365 und mit Azure

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

bewertet von 0 Usern
Beantwortet Dieser Beitrag hat 1 Geprüfte Antwort | 3 Antworten | 2 Followers

Top-50-Beitragsschreiber
276 Beiträge
MStel erstellt in 24 Mai 2018 9:43

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!

Beantwortet Geprüfte Antwort

Top-10-Beitragsschreiber
18.847 Beiträge

MStel:
erhalte ich eine Fehlermeldung "Das Objekt unterstützt die Methode get_lookupValue() nicht"

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

Alle Antworten

Top-10-Beitragsschreiber
18.847 Beiträge

MStel:
erhalte ich eine Fehlermeldung "Das Objekt unterstützt die Methode get_lookupValue() nicht"

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
Top-25-Beitragsschreiber
427 Beiträge

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

Top-50-Beitragsschreiber
276 Beiträge

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
    }

 

 

Seite 1 von 1 (4 Elemente) | RSS