Met Power Apps wordt het tonen van data uit externe applicaties vergemakkelijkt. Deze blog beschrijft hoe je data vanuit een SharePoint kan tonen in een Power App en hoe je deze kunt filteren op een invoerscherm. PowerApp.
SHAREPOINTLIJST
De eerste stap is het aanmaken van een SharePoint lijst (genaamd ‘Tier’) waar je data opgeslagen wordt. Je kan dit volledig naar eigen inzicht doen. In dit voorbeeld gebruiken we de kolommen ‘Tier level’ en ‘Cost center’ als enkele tekstregel. Manager is een people kolom. Hierna kan er data in de kolommen gevuld worden.

Hiermee is het SharePoint gedeelte afgerond en kunnen we beginnen met de Power App.
Power App aanmaken
Binnen de Power App voegen we een invoerveld toe en zetten we het type op ‘Number’. Dit invoerveld noemen we ‘InputAmount’ genoemd. Daarnaast voegen we drie labels toe waarvan ‘valueTierLevel’ het belangrijkste is. Deze naam hebben we verderop weer nodig. De andere twee zijn normale labels.

Zoals aangegeven, ‘valueTierLevel’ is belangrijk. Tier level wordt namelijk berekend op basis van de waarde van de offerte. Vanuit ‘inputAmount’ wordt Tier level bepaald. Deze waarde bepaald op zijn beurt weer wie er goedkeuring moet geven.
Vanuit ‘valueTierLevel’ selecteren we de Advanced Properties (aan de rechterkant):

Om Tier level te kunnen bepalen, gebruiken we meerdere If-Else statements. Er zijn 2 Tier levels (1 en 2) voor bepaalde bedragen (USD 5.000 en USD 10.000). Als er geen match gevonden wordt, wordt Tier level 2 standaard getoond. Je kan meer dan twee Tier levels definiëren indien gewenst, maar in dit voorbeeld gebruiken we twee Tier levels omdat dat minder complex is.
In het Text attribuut van het Label voeg je de volgende If-conditie toe:
If(Value(InputAmount.Text) < 5000, "1", Value(InputAmount.Text) < 10000, "2", "2")
Als je een foutmelding krijgt op deze formule, controleer dan of het type van je invoerveld wel op ‘Number’ staat.
Je kunt de formule testen door in het invoerveld een waarde in te voeren. Als deze meer is dan 5.000, komt er ‘2’ te staan. Je kan de laatste “2” uit je If conditie veranderen. Als je hier bijvoorbeeld ‘3’ in zet en je vult 10.000 of meer in in je invoerveld, zal deze waarde er komen te staan. Deze laatste optie is het ‘else’ gedeelte in je ‘if-then-else’ formule. Het voorbeeld hierboven is een ‘if-then-if-then-else’)

Hiermee hebben we een dynamische Tier level gegenereerd in het formulier. Het volgende wat we kunnen doen is het koppelen van een Tier level aan kostenplaatsen en de bijbehorende manager. Hiervoor gebruiken we de SharePoint lijst die we eerder gemaakt hebben.
SharePoint lijst koppelen aan je Power App
Om de SharePoint-lijst toe te voegen aan de Power App, moeten we de volgende stappen doorlopen:
1. Open het View tabblad in je Power App
2. Klik op Data Sources en voeg een data source toe

3: Selecteer de SharePoint-connector
4. Vul de URL van de SharePoint site in. Alle lijsten binnen deze site worden vervolgens getoond. Selecteer de lijst die je wilt gebruiken in je Power App. In dit geval selecteren we ‘Tier’.

5. Sluit het Data Source paneel
We kunnen nu de data uit de SharePoint lijst gebruiken binnen onze Power App. Maar eerst zorgen we ervoor dat we de data in een data collectie zetten.
Data-collectie
Het voordeel van het gebruik van data-collecties (collections) is dat de data slechts eenmaal wordt ingeladen en hergebruikt kan worden binnen al je schermen en formulieren. Omdat we de OnVisible van ons scherm gebruiken, wordt deze data elke keer als het scherm geladen wordt opnieuw ingeladen in de data-collectie.
Het hangt van je databron af of het verstandig is om te kiezen voor een data collectie of niet. Als de data heel dynamisch is, is het wellicht verstandiger om de data real-time in te laden. Maar door de data in een data collectie te laden, zorg je ervoor dat je gebruiker minder vertraging heeft in de app omdat de data direct beschikbaar is.
1. Selecteer het scherm en open de Advanced properties aan de rechterkant
2. Voer de volgende formule in het OnVisible attribuut van je scherm. Hiermee wordt een collectie genaamd ‘CollectionTier’ aangemaakt die alle data uit de ‘Tier’ data bron bevat.
ClearCollect(Collectionforblog, Tier)
Data-collectie inladen
3. Voeg een nieuw scherm toe aan je app en open dit nieuwe scherm. Ga vervolgens terug naar je vorige scherm. Hierdoor wordt de OnVisible van dat scherm uitgevoerd en wordt je data-collectie ingeladen.
4. Ga naar het View tabblad en selecteer ‘Collections’ om alle data collecties binnen je Power App in te zien. In dit geval zou er maar één data-collectie zichtbaar moeten zijn

De schermafbeelding hierboven toont een aantal grijze velden. In dit voorbeeld zijn dat de People/Group objecten. Je kunt hierop klikken waardoor je de inhoud van het object kunt zien.
Je data-collectie filteren
Binnen de Power App moeten we ook een kostenplaats selecteren. Samen met Tier level wordt hiermee bepaald wie de goedkeurder moet zijn.
1. Voeg een dropdown toe aan het hoofscherm van je app (genaamd ‘ddlCostCenter’)
2. Open de advanced properties van deze dropdown en verwijder de waarde uit het Default attribuut
3. Voeg de volgende formule toe aan het Items attribuut:
Distinct(Collectionforblog, Cost_x0020_center)
Hiermee worde alle unieke waardes uit de de kolom ‘Cost center’ vanuit de SharePoint lijst getoond.
We hebben nu een Tier level afhankelijk van de offerte, een selectie aan kostenplaatsen en de data collectie vanuit de SharePoint lijst. We gaan deze drie nu samen voegen om de manager op te halen.
1. Voeg twee nieuwe labels toe, waarvan de eerste een normaal label is. Het tweede label zal de naam van de manager bevatten.

2. Selecteer het tweede label en vul de volgende formule in in het Text attribuut:
LookUp(Filter(Collectionforblog, Tier_x0020_level = valueTierLevel.Text), Cost_x0020_center = ddlCostCenter.Selected.Value, person_x0020_group.DisplayName)
Deze formule filtert alle waarden op basis van het geselecteerde Tier level. Vanuit die set aan gefilterde waarden wordt een lookup gedaan op de Cost center kolom. Als er een match is gevonden, zal de weergavenaam (DisplayName) vanuit de person kolom getoond worden.
Omdat dit een kolom van het type person is, is het mogelijk om alle bijbehorende data van dat type kolom te gebruiken. Bijvoorbeeld de profielfoto van de gebruiker.

Een mooie uitdaging zou nu zijn om een nieuw item in een andere SharePoint lijst te maken op basis van de opgehaalde data uit bovenstaand voorbeeld.
Succes!
Geschreven door: Ruud Brok