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

Websitespalten - Listen aktualisieren - Powershell

bewertet von 0 Usern
Nicht beantwortet Dieser Beitrag hat 0 Geprüfte Antworten | 6 Antworten | 1 Follower

Top-50-Beitragsschreiber
269 Beiträge
MStel erstellt in 27 Mai 2015 14:41

Hallo,

ich habe eine Websitespalte erstellt, welche ein Lookup auf ein Feld in einer bestehenden Liste ist.
Diese Websitespalte habe ich einem Inhaltstyp hinzugefügt und diesen in einer anderen Liste verwendet.
In meiner zweiten Liste ( in der ich den Inhaltstyp verwende ) bekomme ich nun aber keine Einträge angezeigt, es sei denn ich wenn ich in den Websitespalten Einstellungen ganz unten auf "

Listen aktualisieren

Geben Sie an, ob alle Listen mit dieser Websitespalte mithilfe der Einstellungen auf dieser Seite aktualisiert werden sollen. Dieser Vorgang dauert möglicherweise lange, und alle Anpassungen in untergeordneten Listenspalten gehen verloren
"
Ja - auswähle und bestätige.

Nun ist meine Frage was das System eigentlich im Hintergrund macht, da ich selbiges mithilfe eines Skriptes ausführen muss. Über Skript die Listen updaten hat nichts gebracht habe aber bei Recherchen im gegebenen Kontext die Methode ListCollection.ListsFieldUsedIn gefunden, welche eine List ID zurückgibt:
Habe aber noch nie gesehen dass man Listen über List ID updatet..

Danke an jeden der zu der Thematik was beitragen kann
MFG

Alle Antworten

Top-10-Beitragsschreiber
18.604 Beiträge

Ich würde da weiter oben ansetzen und bereits beim Hinzufügen der Spalte zum Inhaltstyp bzw. beim Hinzufügen des Inhaltstyps zur Liste schauen. Wenn Du von vornherein alles richtig machst, brauchst Du nachher nichts zu reparieren.

Grundsätzlich gibt es sowohl bei Websitespalten als auch bei Inhaltstypen eine Überladung der Update()-Methode, die einen booleschen Parameter entgegennimmt. Damit kann man angeben, daß alle abgeleiteten Elemente ebenfalls aktualisiert werden sollen (oder eben nicht).

Du könntest z.B. mal schauen, ob Du nach dem Hinzufügen der Spalte zum Inhaltstyp auch SPContentType.Update($true) benutzt. Das kann Wunder bewirken. Wenn es das nicht ist, nehme ich an, daß die Lookup-Spalte von Anfang an nicht ordentlich funktioniert. Geht es wenn Du sie manuell einer anderen Liste hinzufügst?

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

Habe jetzt sowohl nach hinzufügen der Websitespalte zum Inhaltstyp, als auch beim Hinzufügen der Websitespalte in die Liste den Content Type und das Field mit der überladenen update Methode aktualisiert. Leider sind die Lookup Werte die in einer Liste vorhanden sind trotzdem nicht in der Websitespalte zu sehen, wenn ich nicht vorher manuell in den Websitespalteneinstellungen die Listen aktualisiere(was ich ja über Skript erzeugen muss).

Das Lookup sieht identisch wie die anderen aus, der Listenverweis und das Feld auf dass es sich bezieht werden richtig angezeigt.
Den Inhaltstyp einer anderen Liste hinzufügen ist nicht möglich ( auch zu testzwecken ) da auf dem Inhaltstyp ein Workflow installiert ist der sich auf eine Liste bezieht und in anderen nicht funktionieren würde.

 

Top-50-Beitragsschreiber
269 Beiträge

Mir ist noch etwas seltsames aufgefallen.
Habe mal in der Liste in der ich die Websitespalte hinzugefügt habe eine Spaltenbeschreibung verändert und auf OK geklickt. Dies war ebenfalls ausreichend damit meine Einträge erscheinen.
Schreibe ich aber über Skript etwas in die Spaltenbeschreibung und führe ein Update darauf und auf die Liste aus, wird wieder nichts angezeigt ( beim hinzufügen des Dokumentes sollte ein Multiple Choice Lookup Feld mit 6 Einträgen erscheinen ).

Wenn ich nur wüsste was dieser "OK" Button in den Spalteneinstellungen im Hintergrund genau ausführt ..

Top-50-Beitragsschreiber
269 Beiträge

Habe gesehen dass sich jemand mit der selben Thematik befasst hat und folgenden Beitrag gefunden:
http://get-spscripts.com/2011/01/fixing-blank-lookup-columns-in.html

Anschließend habe ich folgenden Skriptcode ausgeführt. Ausgangslage ist die selbe wie bei mir, jedoch unterscheidet sich das Ergebnis, welches erzielt wird von meinem. Da bei mir trotzdem nichts passiert. Aber für andere Personen die damit ein Problem haben habe ich nun einen ersten Anhaltspunkt gefunden -> Die ID ist nicht aktuell und muss ersetzt werden.

Versuche weiterhin gegebene Problematik zu lösen.

MFG

Top-10-Beitragsschreiber
18.604 Beiträge

MStel:
Wenn ich nur wüsste was dieser "OK" Button in den Spalteneinstellungen im Hintergrund genau ausführt ..

Das kann man sich mit den entsprechenden Tools ja ansehen ;-)

Letztlich passiert da aber auch nichts spektakuläres. Nimm das Feld, ändere die gewünschten Eigenschaften und rufe Update() auf. Irgendwas fehlt bei Dir bei der Erzeugung des Felds (oder es ist etwas zu viel) und wird durch das manuelle Update in der Seite korrigiert. Ich kann Dir aber auch nicht sagen, was genau das ist.

Ein gutes Hilfsmittel kann SharePoint Manager sein (spm.codeplex.com). Was auch immer Du haben möchtest, lege es manuell im Browser an, öffne dann die Website in SPM und Du kannst Dir das Element mit all seinen Feinheiten ansehen und dann selbst per Code nachbauen.

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

Hab mir das ganze jetzt mal im SharePoint Manager 2010 angesehen.
Habe die Eigenschaften vom Inhaltstyp, der Websitespalte und der Lookup spalte vorher abgescreent, von Hand den Ok Button gedrückt und hinterher nochmal Screenshots von den Eigenschaften gemacht um zu sehen wo sich etwas verändert hat.

Der Inhaltstyp und die Websitespalte waren unverändert, das Feld mit dem Lookup in der Liste jedoch hatte die Eigenschaft "LookupField" nicht gesetzt, obwohl die Browseransicht etwas anderes behauptet. Folgende Zeilen setzen diese Spalte.

$web = Get-spweb -Identity $meinWeb
$list = $web.Lists["meineListe"]
$col = $list.Fields["meinFeld"]
$col.LookupField = "SpaltenNameWieErImLookupIst"
$col.Update($true)
$list.Update($true)

Damit ist mein Problem nun gelöst.

Vielen Lieben dank nochmal an Andi Fandrich für deine Geduld.

Seite 1 von 1 (7 Elemente) | RSS