Aus der Praxis: Filtern von Listeneinträgen anhand von Gruppenmitgliedschaften
Fast in jedem Projekt taucht die Fragestellung auf, ob es möglich ist Listeinträge in Abhängigkeit des angemeldeten Benutzers und/oder einer Gruppenmitgliedschaft zu filtern.
Allgemein bekannt ist die Möglichkeit eine Listenansicht in Abhängigkeit des angemeldeten Benutzers zu filtern.
Anders verhält es sich mit einer Filterung auf Basis von Gruppenmitgliedschaften. Eine Konfiguration über die SharePoint-Oberfläche ist leider nicht möglich. Hier helfen nur SharePoint Designer oder Visual Studio weiter.
SharePoint verwendet den hier beschreiben Ansatz selber und zwar in der Ansicht “Nach meinen Gruppen” der Aufgabenliste.
Öffnet man die Ansicht “Nach meinen Gruppen” (MyGrTsks.aspx) im SharePoint Designer ist am Begin des Abschnittes <XmlDefinition> die folgende CAML-Abfrage zu finden:
<Query>
<Where>
<Membership Type="CurrentUserGroups">
<FieldRef Name="AssignedTo"/>
</Membership>
</Where>
<GroupBy Collapse="FALSE">
<FieldRef Name="AssignedTo"/>
</GroupBy>
<OrderBy>
<FieldRef Name="AssignedTo"/>
<FieldRef Name="Status"/>
<FieldRef Name="Priority"/>
</OrderBy>
</Query>
In dem gelb markierten Abschnitt wir festgelegt, dass nur die Aufgaben angezeigt werden, bei denen sich die Gruppenmitgliedschaften des aktuellen Benutzers mit denen im Feld “AssignedTo” festgelegten überschneiden.
Mit diesem Ansatz ist die Filterung jeder beliebigen SharePoint-Liste möglich.
Das schöne ist, dass eine Anpassung der CAML-Abfrage nicht zu einer Trennung von der Websitedefinition führt, die Seite also “ghosted” bleibt.