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 - Im CEWP mit Javascript lookup values in eine variable einlesen

Geprüfte Antwort Dieser Beitrag hat 4 Antworten

Ohne Rang
282 Beiträge
MStel erstellt 21 Juni 2017 14:29
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich habe in einem Content Editor Webpart JavaScript verwendet und wollte mir zunächst bevor ich mehr mit diesen Werten mache erstmal alles in einem alert ausgeben lassen.

Offensichtlich bin ich problemlos an die liste und ihre Elemente herangekommen, wenn ich mir items.length ausgeben lasse oder auf einzelne Feldwerte abfrage erhalte ich exakt die mit der echten liste übereinstimmenden werte. Die einzige Ausnahme hierbei stellt die Lookup spalte dar, die mir lediglich [object Object] zurückliefert wenn ich versuche darauf zuzugreifen. Hier mein Code:


var context = new SP.ClientContext.get_current();
var web = context.get_web();
var list = web.get_lists().getByTitle("Firmen");
var viewXml = '<View><RowLimit>1200</RowLimit></View>';
var query = new SP.CamlQuery();
query.set_viewXml(viewXml);
this.items = list.getItems(query);
context.load(items, 'Include(FirmenID,lookup_FirmenID,Firmenname)');
context.add_requestSucceeded(onLoaded);
context.add_requestFailed(onFailure);
context.executeQueryAsync();

for (var i = 0; i < items.length; i++) {
var item = items[i];
alert('Firmenname: ' + item["Firmenname"] + '\r\nFirmenID: ' + item["FirmenID"]+ '\r\nLookup: ' + item["lookup_FirmenID"]);

Ausgabe sind die Firmennamen, ID's und anstatt die Lookups, die auf die Id gehen anzuzeigen erhalte ich lediglich [object, Object], wodurch meine IF abfragen ob die ID gleich die Lookup ID sind immer ein false zurückliefern.

Es wäre sehr gut wenn mir jemand helfen würde dieses Problem zu lösen.

mfg

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 21 Juni 2017 15:02
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Die Feldwerte von Lookup sind FieldLookupValue, ähnlich wie Du sie vielleicht serverseitig als SPFieldLookupValue kennst. Sie haben ein lookupId und ein lookupValue Property.

Schaue Dir die Objekte lieber im Debugger an, anstatt in alert-Boxen. Da siehst Du sowas sofort.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
282 Beiträge
MStel Als Antwort am 22 Juni 2017 07:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Tatsache,

wenn ich im Debugger mit Haltepunkt das Objekt ansehe und das lookup aufklappe habe ich 2 Eigenschaften, die die Lookup werte und ID's enthalten.
Diese heißen aber sehr seltsam ( $c_1 und $M_1 ) und ich weiß noch nicht wie ich darauf zugreife.

Vielen dank aber schon mal dafür!

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 22 Juni 2017 09:12
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Alles, was mit Dollarzeichen anfängt und einen Unterstrich im Namen hat, ist privat und sollte von außen nicht angefaßt werden. In JavaScript gibt es keine echten privaten Felder und man behilft sich gerne mit dieser Namensgebung.

Benutze zum Zugriff die dafür vorgesehenen Methoden. Wenn Du ein Property lookupId lesen möchtest, benutze get_lookupId(). Wenn Du es setzen möchtest, benutze set_lookupId(<value>). Auch so eine JavaScript-Eigenart...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
282 Beiträge
MStel Als Antwort am 22 Juni 2017 10:30
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Jetzt weiß ich wenigstens wo der Fehler auftritt.. auch wenn mir der Debugger nicht so ganz gefällt

get_lookupValue erscheint allerdings nur, wenn das item ein lookup zugewiesen hat, da dieses sonst null ist und folgende Fehlermeldung erscheint bei folgendem code:

var i = item.get_item("lookup_FirmenID").get_lookupValue();

Das Objekt unterstützt die Eigenschaft oder Methode "get_item" nicht

Habe also vorher eine if item is null abfrage gemacht und lese nur im else den lookup value aus, dann funktioniert es.


Danke dir Andi, mal wieder sehr hilfreich!
mfg