Oprette et detaljegalleri i en lærredapp

Følg de trinvise instruktioner for at oprette et detaljegalleri i en lærredapp til administration af fiktive data i Northwind Traders-databasen. Dette emne er en del af en serie, der beskriver, hvordan du kan oprette en forretningsapp på relationsdata i Microsoft Dataverse. Du opnår de bedste resultater ved at udforske disse emner i denne rækkefølge:

  1. Opret et ordregalleri.
  2. Oprette en oversigtsformular.
  3. Opret et detaljegalleri (dette emne).

Definition af skærmområder.

Forudsætninger

Før du går i gang med dette emne, skal du installere databasen som beskrevet tidligere i dette emne. Du skal derefter enten oprette ordregalleriet og oversigtsformularen eller åbne appen Northwind Orders (Canvas) - Begin Part 3, som allerede indeholder det pågældende galleri og den pågældende formular.

Oprette en anden titellinje

  1. Øverst på skærmbilledet skal du markere det kontrolelement af typen Etiket, der fungerer som titellinje, kopiere det ved at trykke på CTRL+C og derefter indsætte det ved at trykke på CTRL-V:

    Kopiér og indsæt titellinje.

  2. Tilpas størrelsen på og flytte kopien, så den vises lige under oversigtsformularen.

  3. Fjern teksten fra kopien på en af følgende måder:

    • Dobbeltklik på teksten for at markere den, og tryk derefter på Slet.
    • Angiv etikettens egenskab Text til en tom streng ("").

    Fjern teksten fra kopien af titellinjen.

  1. Indsæt et kontrolelement af typen Galleri med layoutet Tom lodret:

    Tilføj et tomt lodret galleri.

    Det nye galleri, som indeholder ordredetaljer, vises i øverste venstre hjørne.

  2. Luk dialogboksen med datakildevinduet, og tilpas derefter størrelsen på og flyt detaljegalleriet til nederste højre hjørne under den nye titellinje:

    Endelig placering af galleriet Ordredetaljer.

  3. Angiv egenskaben Items for detaljegalleriet til denne formel:

    Gallery1.Selected.'Order Details'
    

    Angiv egenskaben Items for detaljegalleriet.

    Hvis der vises en fejlmeddelelse, skal du kontrollere, at ordregalleriet er navngivet Gallery1 (i ruden Trævisning ved venstre kant). Hvis det pågældende galleri har et andet navn, skal du omdøbe det Gallery1.

    Du har netop sammenkædet de to gallerier. Når brugeren vælger en ordre i ordregalleriet, identificerer det pågældende valg en post i tabellen Ordrer. Hvis den pågældende ordre indeholder et eller flere linjeelementer, knyttes posten i tabellen Ordrer til en eller flere poster i tabellen Ordredetaljer, og der vises data fra disse poster i detaljegalleriet. Denne funktionsmåde afspejler den en til mange-relation, der blev oprettet for dig mellem tabellerne Ordrer og Ordredetaljer. Den angivne formel "fører" den relation ved hjælp af en punktnotation:

    Tabellen Ordrer har en en til mange-relation med tabellen Ordredetaljer.

Vise produktnavne

  1. Vælg Tilføj et element under fanen Indsæt i detaljegalleriet for at vælge galleriskabelonen.

    Vælg skabelonen til detaljegalleriet.

    Kontrollér, at du har valgt galleriskabelonen i stedet for selve galleriet. Afgrænsningskanten skal være en anelse inden for galleriets kant og er sandsynligvis lavere end galleriets højde. Efterhånden som du indsætter kontrolelementer i skabelonen, gentages de for hvert element i galleriet.

  2. Indsæt en etiket i detaljegalleriet under fanen Indsæt.

    Etiketten skal vises i galleriet. Hvis det ikke er muligt, kan du prøve igen, men sørg for at vælge galleriskabelonen, før du indsætter etiketten.

    Føj en ny etiket til detaljegalleriet.

  3. Angiv den nye etikets egenskab Text til denne formel:

    ThisItem.Product.'Product Name'
    

    Hvis der ikke vises nogen tekst, skal du vælge pilen for Ordre 0901 nederst i ordregalleriet.

  4. Tilpas størrelsen på etiketten, så hele teksten vises:

    Vis produktnavn i ordredetaljer.

    Dette udtryk går fra en post i tabellen Ordredetaljer. Posten opbevares i ThisItem over til tabellen Ordreprodukter via en mange-til-en-relation:

    Tabellen Ordredetaljer har en mange til en-relation med tabellen Ordreprodukter.

    Kolonnen Produktnavn (og andre kolonner, du skal til at bruge) udtrækkes:

    Kolonne i tabellen Ordreprodukter.

Vise produktbilleder

  1. Indsæt et kontrolelement af typen Billede i detaljegalleriet på fanen Indsæt.

    Indsæt image-kontrolelement på lærred.

  2. Tilpas størrelsen på og flyt billedet og etiketten, så de er placeret ved siden af hinanden.

    Tip

    Hvis du har detaljeret kontrol over størrelsen og placeringen af et kontrolelement, skal du begynde med at ændre størrelsen på eller flytte det uden at trykke på Alt-tasten og derefter fortsætte med at ændre størrelsen eller flytte kontrolelementet, mens du holder Alt-tasten nede:

    Flyt image-kontrolelement.

  3. Angiv billedets egenskab Image til denne formel:

    ThisItem.Product.Picture
    

    Derudover refererer udtrykket til et produkt, der er knyttet til denne ordredetalje, og udtrækningen af feltet Billede til visning.

    Vis produktbillede.

  4. Reducer højden på galleriets skabelon, så der vises mere end én Ordredetalje-post ad gangen:

    Forkort galleriskabelonen.

Vise produktantal og omkostninger

  1. Indsæt en ny etiket i detaljegalleriet under fanen Indsæt, og tilpas derefter størrelsen på og flyt den nye etiket til højre for produktoplysningerne.

  2. Angiv den nye etikets egenskab Text til dette udtryk:

    ThisItem.Quantity
    

    Denne formel trækker oplysninger direkte fra tabellen Ordredetaljer (der kræves ingen relation).

    Vis produktantal.

  3. Rediger justeringen af dette kontrolelement til Højre under fanen Start:

    Tilpas justering til højre.

  4. Indsæt en ny etiket i detaljegalleriet under fanen Indsæt, og tilpas derefter størrelsen på og flyt etiketten til højre for antaletiketten.

  5. Angiv den nye etikets egenskab Text til denne formel:

    Text( ThisItem.'Unit Price', "[$-en-US]$ #,###.00" )
    

    Hvis du ikke medtager sprogkoden ([$-da-dk]), tilføjes den for dig ud fra dit sprog og område. Hvis du bruger en anden sprogkode, skal du fjerne $ lige efter den kantede parentes (]) og derefter tilføje dit eget valutasymbol på denne position.

    Vis enhedspris.

  6. Rediger justeringen af dette kontrolelement til Højre under fanen Start:

    Tilpas justering til højre.

  7. Indsæt endnu et etiketkontrolelement i detaljegalleriet under fanen Indsæt, og tilpas derefter størrelsen på og flyt den nye etiket til højre for enhedsprisen.

  8. Angiv den nye etikets egenskab Text til denne formel:

    Text( ThisItem.Quantity * ThisItem.'Unit Price', "[$-en-US]$ #,###.00" )
    

    Hvis du ikke medtager sprogkoden ([$-da-dk]), tilføjes den igen for dig ud fra dit sprog og område. Hvis koden er anderledes, skal du bruge dit eget valutasymbol i stedet for $ lige efter den kantede parentes (]).

    Vis udvidet pris.

  9. Rediger justeringen af dette kontrolelement til Højre under fanen Start:

    Tilpas justering til højre.

    Du er færdig med at føje kontrolelementer til detaljegalleriet nu.

  10. Vælg Screen1 i ruden Trævisning for at sikre, at detaljegalleriet ikke længere er markeret.

Føje tekst til den nye titellinje

  1. Indsæt en ny etiket på skærmbilledet under fanen Indsæt:

    Skærmbillede af Indsæt etiket.

  2. Tilpas størrelsen på og flyt den nye etiket over billederne af produkterne på den anden titellinje, og skift derefter tekstens farve til hvid under fanen Start.

  3. Dobbeltklik på etikettens tekst, og skriv derefter Produkt:

    Rediger etikettekst til Produkt.

  4. Kopiér og Indsæt produktetiketten, og tilpas derefter størrelsen på og flyt kopien over kolonnen for antal.

  5. Dobbeltklik på den nye etikets tekst, og skriv derefter Antal:

    Rediger etikettekst til Antal.

  6. Kopiér og indsæt antaletiketten, og tilpas derefter størrelsen på og flyt kopien over kolonnen for enhedspris.

  7. Dobbeltklik på den nye etikets tekst, og skriv derefter Enhedspris:

    Rediger etikettekst til Enhedspris.

  8. Kopiér og indsæt enhedsprisetiketten, og tilpas derefter størrelsen på og flyt kopien over den udvidede kolonne for enhedspris.

  9. Dobbeltklik på teksten i den nye etiket, og skriv derefter Udvidet:

    Rediger etikettekst til Udvidet.

Vise ordretotaler

  1. Reducer højden på detaljegalleriet for at gøre plads til ordretotaler nederst i skærmbilledet:

    Forkort galleri over ordredetaljer.

  2. Kopiér og indsæt titellinjen midt på skærmbilledet, og flyt derefter kopien til bunden af skærmbilledet:

    Kopiér titellinjen, og flyt kopien til den nederste kant.

  3. Kopiér og indsæt produktetiketten fra den midterste titellinje, og flyt derefter kopien til nederste titellinje, lige til venstre for kolonnen Antal.

  4. Dobbeltklik på den nye etikets tekst, og skriv derefter denne tekst:
    Ordretotaler:

    Tilføj etiket for ordretotaler.

  5. Kopier og indsæt etiketten for ordretotaler, og rediger derefter størrelsen på og flyt kopien til højre for etiketten Ordretotaler.

  6. Angiv den nye etikets egenskab Text til denne formel:

    Sum( Gallery1.Selected.'Order Details', Quantity )
    

    Denne formel viser en delegeringsadvarsel, men du kan ignorere den, da ingen af de enkelte ordrer indeholder mere end 500 produkter.

  7. Under fanen Start skal du angive tekstjusteringen for den nye etiket til Højre:

    Tilpas justering.

  8. Kopiér og Indsæt dette etiketkontrolelement, og tilpas derefter størrelsen på og flyt kopien under kolonnen Udvidet.

  9. Angiv kopiens egenskab Text til denne formel:

    Text( Sum( Gallery1.Selected.'Order Details', Quantity * 'Unit Price' ), "[$-en-US]$ #,###.00" )
    

    Denne formel viser en delegeringsadvarsel, men du kan ignorere den, da ingen af de enkelte ordrer indeholder mere end 500 produkter.

    Vis de samlede omkostninger for ordre.

Tilføje plads til nye detaljer

I et galleri kan du vise data, men du kan ikke opdatere dem eller tilføje poster. I detaljegalleriet tilføjer du et område, hvor brugeren kan konfigurere en post i tabellen Ordredetaljer og indsætte den pågældende post i en ordre.

  1. Du kan reducere højden på detaljegalleriet, så det giver tilstrækkelig plads til et redigeringsområde for et enkelt element under galleriet.

    I dette område skal du tilføje kontrolelementer, så brugeren kan tilføje en ordredetalje:

    Forkort detaljegalleriet.

  2. Indsæt en etiket under fanen Indsæt, og tilpas derefter størrelsen på og flyt den hen under detaljegalleriet.

    Indsæt etiket.

  3. Dobbeltklik på teksten i den nye etiket, og tryk derefter på Slet:

  4. Under fanen Start skal du angive den nye etikets farve for Fill til LightBlue:

    Skift etikets udfyldning til lyseblå.

Vælge et produkt

  1. På fanen Indsæt skal du vælge Kontrolelementer > Kombinationsfelt:

    Indsæt kombinationsfelt.

    Kontrolelementet Kombinationsfelt vises i øverste venstre hjørne.

  2. Vælg datakilden Ordreprodukter i vinduet i dialogboksen.

  3. Vælg Rediger (ved siden af Felter) under fanen Egenskaber for kombinationsfeltet for at åbne ruden Data. Kontrollér, at Primær tekst og SearchField er angivet til nwind_productname.

    Du angiver det logiske navn, da ruden Data ikke understøtter viste navne i dette tilfælde endnu:

    Angiv den primære tekst for kombinationsfeltet.

  4. Luk ruden Data.

  5. Rul ned under fanen Egenskaber ved højre kant, og slå Tillad flere markeringer fra , og sørg for, at Tillad søgning er slået til:

    Deaktiver flere valg og aktivér søgning.

  6. Tilpas størrelsen på og flyt kombinationsfeltet til det lyseblå område lige under kolonnen Produktnavn i detaljegalleriet:

    Flyt kombinationsfelt.

    I dette kombinationsfelt angiver brugeren en post i tabellen Produkt for den post med Ordredetaljer, som appen opretter.

  7. Mens du holder Alt-tasten nede, skal du vælge Pil ned for kombinationsfeltet.

    Tip

    Hvis du holder Alt-tasten nede, kan du arbejde med kontrolelementerne i Power Apps Studio uden at åbne tilstanden Eksempel.

  8. Vælg et produkt på den viste liste over produkter:

    Vælg et produkt i kombinationsfeltet.

Tilføje et produktbillede

  1. Vælg Medier > Billede på fanen Indsæt:

    Indsæt image-kontrolelement.

    Kontrolelementet Billede vises i øverste venstre hjørne:

    Standardplacering af image-kontrolelement.

  2. Tilpas størrelsen på og flyt billedet til det lyseblå område under de andre produktbilleder og ved siden af kombinationsfeltet.

  3. Angiv egenskaben Billede for billedet til:

    ComboBox1.Selected.Picture
    

    Angiv egenskaben Billede for billedet.

    Du bruger den samme metode, som du brugte til at vise medarbejderbilledet i formularoversigten. Egenskaben Selected i kombinationsfeltet returnerer hele posten for det produkt, brugeren vælger, herunder feltet Billede.

Tilføje et felt for antal

  1. På fanen Indsæt skal du vælge Tekst > Tekstinput:

    Tilføj tekstinputfelt.

    Kontrolelementet Tekstinput vises i øverste venstre hjørne:

    Standardplacering for tekstinputfelt.

  2. Tilpas størrelsen på og flyt tekstinputfeltet til højre for kombinationsfeltet under kolonnen Antal i detaljegalleriet:

    Tilpas størrelsen på og flyt tekstinputfelt.

    Ved hjælp af dette tekstinputfelt vil brugeren angive feltet Antal i posten for Ordredetaljer.

  3. Angiv egenskaben Default for dette kontrolelement til "".

    Angiv egenskaben Standard for tekstinputfeltet.

  4. Angiv tekstjusteringen for dette kontrolelement til Højre under fanen Start:

    Tilpas justering af kontrolelementet til højre.

Vise enheden og de udvidede priser

  1. Indsæt et kontrolelement af typen Etiket under fanen Indsæt.

    Etiketten vises i øverste venstre hjørne af skærmbilledet:

    Indsæt en etiket.

  2. Tilpas størrelsen på og flyt etiketten til højre for kontrolelementet Tekstinput, og angiv etikettens egenskabs Text til denne formel:

    Text( ComboBox1.Selected.'List Price', "[$-en-US]$ #,###.00" )
    

    Angiv etikettens egenskab Tekst.

    Dette kontrolelement viser Listepris fra tabellen Ordreprodukter. Denne værdi bruges til at bestemme feltet Enhedspris i posten Ordredetaljer.

    Bemærk

    I dette scenarie er værdien skrivebeskyttet, men andre scenarier kan kræve, at appbrugeren redigerer den. I dette tilfælde skal du bruge et kontrolelement af typen Tekstinput og angive egenskaben Default til Listepris.

  3. Angiv tekstjusteringen for listeprisetietten til Højre under fanen Start:

    Tilpas justering af kontrolelementet til højre side.

  4. Kopiér og indsæt listeprisetiketten, og tilpas derefter størrelsen på og flyt kopien til højre for listeprisetiketten.

  5. Angiv den nye etikets egenskab Text til denne formel:

    Text( Value(TextInput1.Text) * ComboBox1.Selected.'List Price', "[$-en-US]$ #,###.00" )
    

    Angiv den nye etikets egenskab Tekst.

    Dette kontrolelement viser den udvidede pris baseret på det antal, som appbrugeren har angivet, og den listepris for produktet, som appbrugeren har valgt. Det er udelukkende til orientering af appbrugeren.

  6. Dobbeltklik på tekstinputkontrolelementet for antal, og skriv derefter et tal.

    Prisetiketen Udvidet genberegner for at vise den nye værdi:

    Angiv et antal og vis den udvidede pris.

Tilføje ikonet Tilføj

  1. Vælg Ikoner > Tilføj på fanen Indsæt:

    Indsæt ikonet Tilføj.

    Ikonet vises i øverste venstre hjørne af skærmbilledet.

    Standardplacering for ikonet Tilføj.

  2. Tilpas størrelsen på og flyt ikonet til højre kant af det lyseblå område, og angiv derefter ikonets egenskab OnSelect til denne formel:

    Patch( 'Order Details',
        Defaults('Order Details'),
        {
            Order: Gallery1.Selected,
            Product: ComboBox1.Selected,
            Quantity: Value(TextInput1.Text),
            'Unit Price': ComboBox1.Selected.'List Price'
        }
    );
    Refresh( Orders );
    Reset( ComboBox1 );
    Reset( TextInput1 )
    

    Angiv ikonet for egenskaben OnSelect.

    Funktionen Patch opdaterer og opretter generelt poster, og de specifikke argumenter i denne formel bestemmer de nøjagtige ændringer, som funktionen foretager.

    • Det første argument angiver den datakilde (i dette tilfælde tabellen Ordredetaljer), hvor funktionen opdaterer eller opretter en post.

    • Det andet argument angiver, at funktionen vil oprette en post med standardværdierne for tabellen Ordredetaljer, medmindre andet er angivet i det tredje argument.

    • Det tredje argument angiver, at fire kolonner i den nye post skal indeholde værdier fra brugeren.

      • Kolonnen Ordre indeholder nummeret på den ordre, som brugeren valgte i ordregalleriet.
      • Kolonnen Produkt indeholder navnet på det produkt, som brugeren har valgt i det kombinationsfelt, der indeholder produkter.
      • Kolonnen Antal indeholder den værdi, som brugeren har angivet i tekstinputfeltet.
      • Kolonnen Enhedspris indeholder listeprisen på det produkt, som brugeren har valgt til denne ordredetalje.

    Bemærk

    Du kan oprette formler, der bruger data fra en hvilken som helst kolonne (i tabellen Ordreprodukter) for det produkt, som appbrugeren vælger i kombinationsfeltet, hvor der vises produkter. Når brugeren vælger en post i tabellen Ordreprodukter, vises ikke kun produktets navn i det pågældende kombinationsfelt, men også produktets enhedspris vises i en etiket. Alle opslagsværdier i en lærredapp refererer til en hel post og ikke kun til en primær nøgle.

    Funktionen Opdater sikrer, at tabellen Ordrer afspejler den post, du netop har føjet til tabellen Ordredetaljer. Med funktionen Reset ryddes data om produkter, antal og enhedspriser, så brugeren nemmere kan oprette endnu en ordre for den samme ordre.

  3. Tryk på F5, og markér derefter ikonet Tilføj.

    Ordren afspejler de oplysninger, du har angivet:

    Animation af tilføjelse af en ordredetalje.

  4. (valgfrit) Føj endnu et element til ordren.

  5. Tryk på Esc for at lukke tilstanden Eksempel.

Fjerne en ordredetalje

  1. Vælg skabelonen til detaljegalleriet midt på skærmbilledet:

    Vælg galleriskabelon.

  2. Vælg Ikoner > Papirkurv på fanen Indsæt:

    Indsæt ikonet Papirkurv.

    Ikonet Papirkurv vises i øverste venstre hjørne af galleriets skabelon.

    Ikons standardplacering.

  3. Tilpas størrelsen på og flyt ikonet Papirkurv til højre side af detaljegalleriets skabelon, og angiv derefter ikonets egenskab OnSelect til denne formel:

    Remove( 'Order Details', ThisItem ); Refresh( Orders )
    

    Angiv ikonets egenskab OnSelect.

    Herefter kan du ikke fjerne en post direkte fra en relation, så funktionen Fjern fjerner en post direkte fra den relaterede tabel. ThisItem angiver den post, der skal fjernes fra den samme post i detaljegalleriet, hvor ikonet Papirkurv vises.

    Igen bruger handlingen cachelagrede data, så funktionen Opdater oplyser tabellen Ordrer om, at appen har ændret en af dens relaterede tabeller.

  4. Tryk på F5 for at åbne tilstanden Eksempel, og vælg derefter ikonet Papirkurv ved siden af hver enkelt post for Ordredetaljer, som du vil fjerne fra ordren.

  5. Prøv at tilføje og fjerne forskellige ordredetaljer fra dine ordrer:

    Animation af tilføjelse og fjernelse af ordredetaljer.

Konklusion

Kort fortalt har du tilføjet et andet galleri for at vise ordredetaljer og kontrolelementer, som tilføjer og fjerner en ordredetalje i appen. Du har brugt disse elementer:

  • Et andet kontrolelement af typen Galleri, som er kædet sammen med ordregalleriet via en en-til-mange-relation: Gallery2.Items = Gallery1.Selected.'Order Details'
  • En mange til en-relation fra tabellen Ordredetaljer til tabellen Ordreprodukter: ThisItem.Product.'Product Name' og ThisItem.Product.Picture
  • Funktionen Valg til at oprette en liste over produkter: Choices( 'Order Details'.Product' )
  • Egenskaben Selected for et kombinationsfelt som den fuldstændige mange-til-en-relaterede post: ComboBox1.Selected.Picture og ComboBox1.Selected.'List Price'
  • Funktionen Patch til at oprette en post for Ordredetaljer: Patch( 'Order Details', Defaults( 'Order Details' ), ... )
  • Funktionen Remove til at slette en post for Ordredetaljer: Remove( 'Order Details', ThisItem )

Denne række emner har været en hurtig gennemgang af, hvordan du bruger Dataverse-relationer og valg i en lærredapp til uddannelsesmæssige formål. Før du frigiver en app til produktion, skal du overveje feltvalidering, fejlhåndtering og mange andre faktorer.

Bemærk

Kan du fortælle os om dine sprogpræferencer for dokumentation? Tag en kort undersøgelse. (bemærk, at denne undersøgelse er på engelsk)

Undersøgelsen tager ca. syv minutter. Der indsamles ingen personlige data (erklæring om beskyttelse af personlige oplysninger).