SharePoint Lookup Fields filtern

Gern setzen wir für unsere Kunden individuelle Wünsche in SharePoint um. Hier war es der Wunsch die Liste "Projekte", samt der Inhaltstypen Programm, Projekt und Teilprojekt durch eine Filterung hierarchisch darzustellen und einfacher zu handhaben. Das Vorgehen ist natürlich auch auf jegliche anderen SharePoint Listen anwendbar.

 

Inhaltstypen im SharePoint Standard

 

eltern kind

Liste „PROJEKTE“ im SharePoint Standard

Das 3-Ebenen-Modell in SharePoint bewirkt das bei der Erstellung von Inhaltstypen eine Eltern-Kind-Beziehung entsteht. Einem Teilprojekt wird auch immer genau ein Projekt zugeordnet und diesem Projekt kann auch wiederum nur ein Programm zugeordnet werden.

 

 

 

 

 

 

liste hirarchischListe „PROJEKTE“ hirarchisch sortierte Inhaltstypen

 Über die SharePoint Oberfläche kann direkt die Konfiguration der neuen Anordnung erfolgen. Die vorab definierten Websiteinhaltstypen Programm, Projekt und Teilprojekt werden bei der Erstellung der Listeninhaltstypen ausgewählt.

 

Zusätzlich müssen die Websitespalten Projekt und Teilprojekt erstellt werden. Diese müssen jeweils als Nachschlagespalte auf die Liste Projekte bzw. deren Titel referenzieren.

 

3

Inhaltstyp Teilprojekt mit der Elternbeziehung zum Inhaltstyp Projekt

 

Wenn nun auf Basis eines der vorhandenen Inhaltstypen ein neues Element erstellt wird, so wird die gleiche Anzahl an einträgen in der Nachschlagespalte angezeift, wie auch Elemente in der Liste Projekte enthalten sind.

 

4

Erstellen eines neuen Elements vom Inhaltstyp Teilprojekt

 

 

5

Zur Auswahl stehende Nachschlageelemente bei dem Inhaltstyp Teilprojekt

 

Allerdings werden hier immer noch thematisch unpassenden Einträgen angezeigt und dies führt ab einer höheren Anzahl auch zu einem unübersichtlichen Auswahlfeld.

 

Das kann behoben werden, indem ein kleines Script zum Einsatz kommt, das die anzuzeigenden Elemente in der Auswahl begrenzt. Das Script kann an beliebiger Stelle auf der Newform.aspx und Editform.aspx Seite bspw. mittels XML Viewer Webpart platziert werden.

 

Zur Vereinfachung für diesen Blogeintrag definieren wir unsere Variablen anhand der Spaltennamen im JavaScript Code selbst (rot markiert) und verlinken auf die gehostete jQuery Bibliothek bei Google.


<script src="/https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.j "></script>

<script>

function filterProgramsOrProjects(ctypename) {

       var clientContext = SP.ClientContext.get_current();

       var camlQuery = new SP.CamlQuery();

       camlQuery.set_viewXml('<View><Query><Where><Neq><FieldRef Name=\'ContentType\'/>' +

             '<Value Type=\'Computed\'>' + ctypename + '</Value></Neq></Where></Query></View>');

       var collListItem = clientContext.get_web()

                                               .get_lists()

                                               .getById(_spPageContextInfo.pageListId)

                                               .getItems(camlQuery);

       clientContext.load(collListItem);      

       clientContext.executeQueryAsync(function(){

          var dd = $("select[title='" + ctypename + "']");

             var listItemEnumerator = collListItem.getEnumerator();

             while (listItemEnumerator.moveNext()) {

                    dd.find('option[value=' + listItemEnumerator.get_current().get_id() + ']').remove();

             }

       }, function(){});

}

function RunFilters() {

       filterProgramsOrProjects("Programm");

       filterProgramsOrProjects("Projekt");

}

$(document).ready(function () { ExecuteOrDelayUntilScriptLoaded(RunFilters, "sp.js"); });

</script>

JavaScript Code zur Manipulation der Nachschlagespalten Projekt und Programm

 

Das Script ermöglicht nun, dass beim Anlegen eines neuen Elements auf die zum Inhaltstyp passenden Einträge reduziert wird.

 

6

Erstellen eines neuen Elements vom Inhaltstyp Teilprojekt

 

7

Zur Auswahl stehende, passende Nachschlagefelder bei dem Inhaltstyp Teilprojekt