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

Standardspaltenwerte mit JSOM oder REST setzen

bewertet von 0 Usern
Dieser Beitrag hat 34 Antworten | 2 Followers

Top-200-Beitragsschreiber
Beiträge 70
Dennis94 erstellt: 15 Mai 2017 12:11

Hallo Zusammen,

Ich versuche momenten die Standardspaltenwerte von Ordnern zu setzen. Mit CSOM war das mittels der MetaDataDefaults Klasse relativ einfach möglich. Jetzt muss ich das jedoch mit JSOM oder eben der REST API machen und da habe ich noch keine Lösung. Gibt es die MetaDataDefaults in JSOM? Und falls nicht weiß jemand wie man sons die Standartspaltenwerte setzen kann?

Vielen Dank schonmal für eure Hilfe!

Gruß Dennis

Top-10-Beitragsschreiber
Männlich
Beiträge 18.231

Ein fertiges Objekt gibt es dafür nicht, aber die Werte werden im PropertyBag des RootFolders gespeichert und es ist gar nicht so schwierig. Speichere einfach mal ein paar Werte manuell über den Browser und schaue es Dir an.

Viele Grüße
Andi
af @ evocom de
Blog
Top-200-Beitragsschreiber
Beiträge 70

Hi Andi,

ich verstehe noch nicht genau, wie mir das beim automatischen Anlegen helfen kann. Vielleicht habe ich mein Problem auch schlecht beschrieben. Also ich möchte quasi direkt, wenn ich einen Ordner per JSOM anlege, diesem direkt Standardwerte mitgeben.

Top-25-Beitragsschreiber
Männlich
Beiträge 539

Dann musst du quasi direkt, nachdem du den Ordner via JSOM angelegt hast, via JSOM die Eigenschaft im Property Bag vom Root Folder der Liste schreiben. So, wie Andi es schon angedeutet hat.

Grüße

Olaf

Top-200-Beitragsschreiber
Beiträge 70

Achso, ok. Dann lege ich ja auf der "obersten" Ebene (also der Bibliothek) die Standardwerte ab. Ich würde das gleiche aber gerne eine Ebene darunter direkt auf dem Ordner machen, weil wenn ich die Standardwerte auf der obersten Ebene ändere, werden nach unten auch verändert.

Top-10-Beitragsschreiber
Männlich
Beiträge 18.231

Ich kann nur wiederholen: lege einige Standardwerte manuell im Browser fest und schaue Dir an, wie das abgelegt wird. Egal in welcher Ebene man das macht, es wird immer im Property Bag des Root-Folders gespeichert.

Viele Grüße
Andi
af @ evocom de
Blog
Top-200-Beitragsschreiber
Beiträge 70

Ah, ich glaube ich weiß jetzt was du meinst :)

Wenn ich also von z.B. "Ordner1" die Standardwerte ändere, wird das in Root-Folder/Ordner1 (Quelle des Standardwerts) hinterlegt? Wie ich im Code darauf zugreife ist mir aber schleierhaft. In den Root-Folder komme ich ja problemlos mit  list.get_fields().getByInternalNameOrTitle(name) und dort dann mit .set_defaultValue(wert). Aber wie weise ich das dem Unterordner zu? SP-Folder hat keine get_fields() - Methode.

Top-10-Beitragsschreiber
Männlich
Beiträge 18.231

Wie oben schon geschrieben, gibt es kein Objekt dafür, d.h. Du mußt direkt über die REST-API gehen. Den genauen Weg kann ich Dir aber nicht auswendig sagen. Sinngemäß web/lists/getbytitle('Name der Liste')/rootfolder/properties

Viele Grüße
Andi
af @ evocom de
Blog
Top-200-Beitragsschreiber
Beiträge 70

Ok, dann gucke ich mal in dieser Richtung.

Schonmal Vielen Dank für eure Hilfe und Geduld :)

Ich hätte noch eine Frage in einem anderen Zusammenhang. Und zwar versuche ich beim Dateiupload die Metadaten für das Dokument mitzugeben. Das funktioniert auch soweit eigentlich ganz gut. Ich habe nur an einer Stelle ein Problem:

Eines der Felder ist ein Vwewaltetes Metadara-Feld. Ich finde die GUID usw. also auch da alles top, aber wenn ich termMatches einlade (dort ist der entsprechende Term gespeichert, termMatches ist also eine TermCollection), dann bekomme beim nächsten Zugriff auf termMatches die Fehlermeldung, dass termMatches nicht initialisiert ist. Setze ich jedoch ein alert() zwischen Einladen und nächstem Zugriff, funktioniert es einwandfrei.

An sich ist das nicht soo schlimm, aber es ist leicht nervig, dass jedesmal ein zusätzliches Popupfenster aufploppt.

Gibt es da eine elegantere Lösung? Ich habe schonmal nach setTimeout geguckt, um die Funktion "schlafen" zu lassen, aber egal wie ich das benutze, es kommen immer Fehlermeldungen.

Top-10-Beitragsschreiber
Männlich
Beiträge 18.231

Wie alles werden auch die Terms asynchron geladen. Durch den alert bekommst Du einfach nur genug Zeit, damit dieser asynchrone Vorgang abgeschlossen werden kann. Mit setTimeout würdest Du dasselbe erreichen. Viel besser ist aber, einfach die zugehörende success-Methode zu verwenden.

ClientContext.executeQueryAsync nimmt zwei Parameter entgegen: der erste ist der success-Callback und der zweite für den Fehlerfall.

Viele Grüße
Andi
af @ evocom de
Blog
Top-200-Beitragsschreiber
Beiträge 70

Ich habe das mal so probiert. termMatches wird zugewießen und für die success-Callback Funktion habe ich dann entsprechend die Funktion für den nächsten Zugriff angegeben (dort hole ich mir die termId des Terms). Ich bekomme die Fehlermeldung termMatches is not defined :(

Top-200-Beitragsschreiber
Beiträge 70

Ich konnte das Problem jetzt lösen. Ich hatte die Funktionen zu sehr ineinander geschachtelt, darum bekam ich den Fehler. Nachdem ich das geändert hatte, hat Andis Lösung funktioniert, nochmal Danke :)

Da ich diesesScript aus anderen Anwendungen heraus nutzen möchte (also außerhalb von SharePoint online) würde ich dies gerne Testweise in einer einfachen Html-Seite versuchen. Ich habe dabei das Problem, dass ich die sp.js Datei nicht richtig referenziere ( ich bekomme den Fehler SP is not defined beim ersten Code mit SharePoint Funktionalität). Wo genau ist diese Javascript Datei abgelegt bzw. wie referenziere ich richtig auf sie?

Top-10-Beitragsschreiber
Männlich
Beiträge 18.231

Da werden Dir noch mehr SharePoint-eigene Dateien wie die sp.runtime.js fehlen. Wenn Du das außerhalb von SharePoint benutzen möchtest, solltest Du das JavaScript Object Model vergessen und direkt auf die REST-API losgehen. Und Du hast natürlich das Authentifizierungsproblem...

Viele Grüße
Andi
af @ evocom de
Blog
Top-200-Beitragsschreiber
Beiträge 70

Ok, dann probiere ich das mal so. Danke :)

Top-200-Beitragsschreiber
Beiträge 70

Wie kann ich das Authentifizierungsproblem denn lösen? Ich habe schon einige Artikel gelesen die in Richtung Authorization: "Bearer" + accessToken gehen, aber ich weiß nicht wo ich den accessToken herbekomme. Tritt das Problem denn auch auf, wenn ich das Script aus Office 365 heraus ausführe?

Seite 1 von 3 (35 Elemente) 1 2 3 Weiter > | RSS