Bei der Konzeption von Formularen mit Power Apps ist eine der Anforderungen sehr häufig, das man zum Beispiel einen Antrag einer verantwortlichen Person zuweisen kann. Leider muss der Benutzer dazu bei der normalen Personen-Auswahl immer erst ein paar Buchstaben eingeben, um dann die gewünschte Person angezeigt zu bekommen.
Anwenderfreundlicher ist die direkte Auswahl aus einer Dropdown – insbesondere, wenn der Kreis der Personen relativ klein ist (5-30 Personen zum Beispiel). Bei noch kleineren Gruppen wäre auch die Darstellung über Icons oder Benutzer-Fotos denkbar – die technische Umsetzung aber genau gleich wie bei einer Dropdown.
In unserem Beispiel wollen wir die zur Auswahl möglichen Personen in einer separaten SharePoint-Liste verwalten. Dies hat den Vorteil, das noch weitere Meta-Informationen mit gepflegt werden können.
Ich habe dazu der Einfachheit halber in SharePoint eine Custom-List mit dem Namen „Project Users“ angelegt und eine Spalte namens „User“ hinzugefügt, welche vom Typ „Person or Group“ ist. In das Titel-Feld schreibe ich den Benutzernamen, wie er in der Dropdown-Liste erscheinen soll, in der Spalte „User“ wähle ich den entsprechenden SharePoint-Benutzer aus, welcher in der Power App in die Lookup-Dropdown automatisch übernommen werden soll.
In Power Apps binden wir das Edit-Formular an eine andere SharePoint-Liste (unsere „Master-Liste“), welche das eigentliche People-Lookup enthält (hier: „PersonToInform“), und fügen eine „Custom card“ hinzu…
… und fügen in diese Custom Card ein Dropdown-Control ein und binden diese an unsere Custom-List „Project Users“:
Damit nun bei Auswahl eines Benutzers in der einfachen Dropdown der User in dem eigentlichen People Lookup automatisch eingetragen wird, müssen wir noch die folgenden Schritte durchführen:
Im „OnChange“ Event der einfachen Dropdown führen wir ein „UpdateContext“ aus, um den ausgewählten Benutzer aus der einfachen Dropdown in den aktuellen Kontext zu setzen (hier in die Variabel „oSelectedPerson“):
Das „People Picker“ Dropdown benötigt mindestens die Attribute „Claims“ und „DisplayName“, um den Benutzer korrekt zuweisen zu können.
Wichtig ist hierbei, das „User“ der Spaltenname aus der SharePoint-Liste mit den möglichen Benutzern ist. Dieser muss unter Umständen angepasst werden, wenn Sie einen anderen Namen für die Spalte verwenden.
Als letztes muss noch der „Default“-Wert für das „People Picker“ Dropdown gesetzt werden, um den ausgewählten Benutzer aus dem Kontext zu übernehmen (dazu muss das Control entsperrt werden). Wichtig ist dabei die Prüfung, ob die Context Variable leer ist oder nicht:
Die Bezeichnung „.PersonToInform“ ist hierbei der Spaltenname in der SharePoint-Liste, welches die „People Picker“ Spalte enthält und mit den Werten aus der Dropdown befüllt werden soll.
Damit nach dem Speichern des Eintrags in SharePoint der ausgewählte User in der People Dropdown im Power Apps Formular wieder zurückgesetzt wird, kann in dem „OnSelect“ Event auf einem Button der folgende Code ausgeführt werden, um den Context wieder auf null zu setzen (durch die Funktion „Blank()“):
Grundsätzlich kann man die Informationen aber natürlich auch über PATCH an die SharePoint-Liste übertragen.
Zum Schluß setzt man das „People Picker“ Dropdown auf hidden, damit es nicht doppelt erscheint. Zu Debugging-Zwecken kann man es aber am während der Entwicklung natürlich auch noch sichtbar lassen, um die Funktionsweise zu überprüfen.