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.




Websitespalten - Listen aktualisieren - Powershell

Unbeantwortet Dieser Beitrag hat 6 Antworten

Ohne Rang
282 Beiträge
MStel erstellt 27 Mai 2015 14:41
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

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

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 27 Mai 2015 15:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

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
Ohne Rang
282 Beiträge
MStel Als Antwort am 28 Mai 2015 09:32
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

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.

 

Ohne Rang
282 Beiträge
MStel Als Antwort am 28 Mai 2015 10:28
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

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 ..

Ohne Rang
282 Beiträge
MStel Als Antwort am 28 Mai 2015 14:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

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

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 28 Mai 2015 14:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="MStel"]Wenn ich nur wüsste was dieser "OK" Button in den Spalteneinstellungen im Hintergrund genau ausführt .. [/quote]

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
Ohne Rang
282 Beiträge
MStel Als Antwort am 29 Mai 2015 09:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

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.