In diesem Teil der PowerApps-Serie beschäftigen wir uns mit Cascading Dropdowns und Galleries. Damit die Gallery nicht alle Datensätze lädt und dadurch unübersichtlich wird, lässt man sich nur noch die Datensätze anzeigen, die benötigt werden. Wie dies im Fall von PowerApps geht, zeige ich Ihnen in diesem Beitrag.

Was ist ein Cascading Dropdown?

Bei einem Kaskadierenden Dropdown erstellt man Abhängigkeiten, ahnhand deren passende Werte angezeigt werden. Beispielsweise hat man zwei Dropdowns und abhängig davon was im ersten angewählt wurde, werden im zweiten die dazu passenden Werte angezeigt.

Use-Cases

Kaskadierende Dropdowns einzusetzen ergibt in so ziemlich jedem Kontext Sinn. Hier einige mögliche Use-Cases aufgelistet:

  • HR Abteilung – Mitarbeiterverwaltung
  • Detailhändler – Standortverwaltung
  • Handels-/ Produktionsunternehmen – Produktverwaltung
  • Autohändler – Auto-Konfigurator
  • Immobilien Verwaltung – Immobilienverwaltung
  • etc.

Ich werde Ihnen anhand einer Immobilienverwaltung zeigen, wie sich nur die Immobilen anzeigen lassen, die einem bestimmten Gebäude zugeordnet sind.

1. Dropdown

Im ersten Dropdown lassen wir alle Siedlungen aus der SharePoint-Liste anzeigen. Damit jede Siedlung nur einmal angezeigt wird, verwenden wir die Distinct Funktion.

Somit sieht die Funktion für die Items des Dropdowns folgendendermassen aus:

Sort(Distinct(Liegenschaften, Siedlung), Result)

2. Dropdown

Im zweiten Dropdown lassen wir nun nur noch die Strassen anzeigten, die zur gewählten Siedlung gehören. Neu kann die Abhängigkeit einfach in den Eigenschaften des Dropdowns angewählt werden. Ich werde Ihnen in diesem Beitrag jedoch zeigen, wie es manuell mitels einer Kombination von Funktionen gelöst wird.

Dazu werden in der Items-Property der Combobox die Funktionen Sort, Distinct und Filter verwendet.

Sort(Distinct(Filter(Liegenschaften, Siedlung = ComboBoxSiedlung.Selected.Result), Strasse),Result)

Als Resultat dieser Funktion stehen nun nur noch die Strassen zur Auswahl, die zu der im ersten Dropdown ausgewählten Siedlung gehören.

Gallerie

Um nun die Objekte anzuzeigen, wird ein Gallery-Modul verwendet. Solange keine Strasse ausgewählt wurde, wird ein Standardwert ausgegeben. In diesem Fall wird beim App-Start die Collection colDefaultItem deklariert und mit den entsprechenden Parametern initialisiert. Sie müssen den Default-Value nicht unbedingt individuell deklarieren, Sie können per Default auch einfach alle Objekte anzeigen lassen.

Wurde nun im zweiten Dropdown die Strasse ausgewählt, werden sämtliche Wohnungen, die zu dieser Liegenschaft gehören aufgelistet.

Die Funktion der Items-Property lautet:

If(
    IsEmpty(ComboBoxStrasse.SelectedItems.Result),
    colDefaultItem,
    Filter(
        Liegenschaften,
        Strasse = ComboBoxStrasse.Selected.Result
    )
)

Erklärung:
Wenn also keine Strasse ausgewählt wurde, zeigt es die Collection colDefaultItem an, ansonsten werden alle Objekte aufgelistet, welche die Condition – Strasse = ComboBoxStrasse.Selected.Result – erfüllen.

Schlussworte

Wie Sie sehen, kann die Usability einer App mit wenig Aufwand massiv verbessert werden.

Benötigen Sie unterstützung bei der Erstellung Ihrer Business-Applikation?
Kontaktieren Sie uns ungeniert.

Bis zum nächsten Mal,
Sascha