Del via


Opprette et detaljgalleri i en lerretsapp

Følg trinnvise instruksjoner for hvordan du oppretter et detaljgalleri i en lerretsapp for behandling av fiktive data i Gastronor-databasen. Dette emnet er en del av en serie som forklarer hvordan du oppretter en forretningsapp på relasjonsdata i Microsoft Dataverse. Du får best resultat ved å se på disse emnene i denne rekkefølgen:

  1. Opprette et ordregalleri.
  2. Opprett et nytt sammendragsskjema.
  3. Opprette et detaljgalleri (dette emnet).

Definisjon av skjermområder.

Forutsetninger

Før du starter dette emnet må du installere databasen slik det ble beskrevet tidligere i dette emnet. Du må enten opprette ordregalleriet og sammendragsskjemaet eller åpne Gastronor-ordrer (lerret) – Start del 3-appen, som allerede inneholder dette galleriet og dette skjemaet.

Opprette en ny tittellinje

  1. Øverst på skjermen velger du Etikett-kontrollen som fungerer som tittellinje, kopierer den ved å trykke CTRL+C og deretter limer den inn ved å trykke CTRL+V:

    Tittellinje for kopier og lim inn.

  2. Endre størrelse på og flytte kopien, slik at den vises like under sammendragsskjemaet.

  3. Fjern teksten fra kopien på en av disse måtene:

    • Dobbeltklikk teksten for å velge den, og trykk deretter Delete.
    • Sett etikettens Text-egenskap til en tom streng ("").

    Fjern teksten fra kopien for tittellinjen.

  1. Sett inn Galleri-kontrollen med oppsettet Tom loddrett:

    Legg til et tomt vertikalt galleri.

    Det nye galleriet, som vil vise ordredetaljer, vises øverst i venstre hjørne.

  2. Lukk underdialogboksen for datakilde, og endre deretter størrelsen på og flytt detaljgalleriet til nedre høyre hjørne, under den nye tittellinjen:

    Endelig plassering for ordredetaljegalleri.

  3. Angi Items-egenskapen for detaljgalleriet til denne formelen:

    Gallery1.Selected.'Order Details'
    

    Angi Items-egenskap for detaljgalleriet.

    Hvis det vises en feil, kontrollerer du at ordregalleriet har navnet Galleri1 (i Trevisning-ruten nær venstre kant). Hvis galleriet har et annet navn, endrer du navnet til Galleri1.

    Du har akkurat koblet de to galleriene. Når brukeren velger en ordre i ordregalleriet, identifiserer dette valget en oppføring i Ordrer-tabellen. Hvis denne ordren inneholder ett eller flere linjeelementer, er oppføringen i Ordrer-tabellen koblet til én eller flere oppføringer i Ordredetaljer-tabellen, og data fra disse oppføringene vises i detaljgalleriet. Denne virkemåten gjenspeiler én-til-mange-relasjonen som ble opprettet for deg mellom tabellene Ordrer og Ordredetaljer. Formelen du angav, "veileder" relasjonen ved hjelp av punktnotasjon:

    Én-til-mange-relasjon mellom Ordrer-tabellen og Ordredetaljer-tabellen.

Vise produktnavn

  1. Velg Legg til et element fra Sett inn-fanen for å velge gallerimalen:

    Velg malen for detaljgalleriet.

    Kontroller at du har valgt gallerimalen i stedet for selve galleriet. Grenseboksen må være litt innenfor grenselinjen for galleriet og sannsynligvis kortere enn høyden på galleriet. Når du setter inn kontroller i denne malen, blir de gjentatt for hvert element i galleriet.

  2. Sett inn-kategorien setter du inn en etikett i detaljgalleriet.

    Etiketten skal vises i galleriet. Hvis den ikke gjør det, prøver du på nytt, men du må passe på at du velger malen for galleriet før du setter inn etiketten.

    Legg til en etikett i detaljgalleriet.

  3. Angi den nye etikettens Text-egenskap for denne formelen:

    ThisItem.Product.'Product Name'
    

    Hvis det ikke vises noen tekst, velger du pilen for Ordre 0901 nær bunnen av ordregalleriet.

  4. Endre størrelse på etiketten, slik at hele teksten vises:

    Vis produktnavn i ordredetalj.

    Dette uttrykket går fra en oppføring i Ordredetaljer-tabellen. Oppføringen holdes i ThisItem over til Ordeprodukter-tabellen via en mange-til-én-relasjon:

    Mange-til-én-relasjon mellom Ordredetaljer-tabellen og Ordeprodukter-tabellen.

    Produktnavn-kolonnen (og andre kolonner du er i ferd med å bruke), trekkes ut:

    Kolonne i Ordeprodukter-tabellen.

Vise produktbildene

  1. I Sett inn-kategorien setter du inn en Bilde-kontroll i detaljgalleriet:

    Sett inn bildekontroll på lerretet.

  2. Endre størrelse på og flytt bildet og etiketten slik at de er side ved side.

    Tips

    Hvis du vil ha finjustert kontroll over størrelsen og posisjonen for en kontroll, begynner du å endre størrelse på eller flytter den uten å trykke Alt-tasten, og deretter fortsetter du med å endre størrelsen på eller flytte kontrollen mens du holder nede Alt-tasten:

    Flytt bilde-kontroll.

  3. Sett bildets Image-egenskap til denne formelen:

    ThisItem.Product.Picture
    

    Uttrykket refererer til et produkt som er knyttet til denne ordredetaljen, og trekker ut Bilde-feltet som skal vises.

    Vis produktbilde.

  4. Reduser høyden på galleriets maler, slik at mer enn én Ordredetalj-oppføring vises om gangen:

    Forkort malen for galleriet.

Vise produktantall og kostnad

  1. I Sett inn-kategorien setter du inn en ny etikett i detaljgalleriet, og deretter endrer du størrelse på og flytter den nye etiketten til høyre for produktinformasjonen.

  2. Angi den nye etikettens Text-egenskap for dette uttrykket:

    ThisItem.Quantity
    

    Denne formelen henter informasjon direkte fra Ordredetaljer-tabellen (krever ingen relasjon).

    Vis produktantall.

  3. I kategorien Start endrer du justeringen for denne kontrollen til Høyre:

    Endre justeringen til høyre.

  4. I Sett inn-kategorien setter du inn en ny etikett i detaljgalleriet, og deretter endrer du størrelse på og flytter etiketten til høyre for antalletiketten.

  5. Angi den nye etikettens Text-egenskap for denne formelen:

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

    Hvis du ikke inkluderer språkkoden ([$-en-us]), blir den lagt til for deg basert på ditt språk og område. Hvis du bruker en annen språkkode, må du fjerne $ like etter det avsluttende hakeparenteset (]) og deretter legge til ditt eget valutasymbol i den posisjonen.

    Vis enhetspris.

  6. I kategorien Start endrer du justeringen for denne kontrollen til Høyre:

    Endre justeringen mot høyre.

  7. I Sett inn-kategorien setter du inn en ny etikettkontroll i detaljgalleriet, og deretter endrer du størrelse på og flytter den nye etiketten til høyre for enhetsprisen.

  8. Angi den nye etikettens Text-egenskap for denne formelen:

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

    Hvis du ikke inkluderer språkkoden ([$-en-us]), blir den lagt til for deg basert på ditt språk og område. Hvis koden er forskjellig, vil du bruke ditt eget valutasymbol i stedet for $ like etter det avsluttende hakeparenteset (]).

    Vis utvidet pris.

  9. I kategorien Start endrer du justeringen for denne kontrollen til Høyre:

    Endre justeringen på høyre side.

    Du er ferdig med å legge til kontroller i detaljgalleriet for øyeblikket.

  10. I ruten Trevisning velger du Skjerm 1 for å sikre at detaljgalleriet ikke lenger er valgt.

Legge til tekst på den nye tittellinjen

  1. I kategorien Sett inn setter du inn en en ny etikett på skjermen:

    Skjermbilde av sett inn etikett.

  2. Endre størrelse på og flytt den nye etiketten over bildene av produktene på den andre tittellinjen, og endre deretter fargen på teksten til hvit i kategorien Hjem.

  3. Dobbeltklikk etikettens tekst, og skriv deretter inn Produkt:

    Endre etiketteksten til Produkt.

  4. Kopier og lim inn produktetiketten, og endre deretter størrelsen på og flytt kopien over antallkolonnen.

  5. Dobbeltklikk den nye etiketten, og skriv deretter inn Produkt:

    Endre etiketteksten til Antall.

  6. Kopier og lim inn antalletiketten, og endre deretter størrelsen på og flytt kopien over enhetspriskolonnen.

  7. Dobbeltklikk den nye etiketten, og skriv deretter inn Enhetspris:

    Endre etiketttekst til Enhetspris.

  8. Kopier og lim inn enhetsprisetiketten, og endre deretter størrelsen på og flytt kopien over kolonnen for utvidet pris.

  9. Dobbeltklikk teksten til den nye etiketten, og skriv deretter inn Utvidet:

    Endre etiketteksten til Utvidet.

Vise ordretotaler

  1. Reduser høyden på detaljgalleriet for å gjøre plass til ordretotalene nederst på skjermen:

    Reduser størrelsen på galleriet for ordredetaljer.

  2. Kopier og lim inn tittellinjen midt på skjermen, og flytt deretter kopien til bunnen av skjermen:

    Kopier tittellinjen, og flytt kopi til nedre kant.

  3. Kopier og lim inn produktetiketten fra den midterste tittellinjen, og flytt deretter kopien til den nedre tittellinje, rett til venstre for Antall-kolonnen.

  4. Dobbeltklikk den nye etiketteksten, og skriv deretter inn denne teksten:
    Ordretotaler:

    Legg til etikett for ordretotaler.

  5. Kopier og lim inn etiketten for ordretotaler, og endre deretter størrelsen på og flytt kopien til høyre for etiketten for ordretotal.

  6. Angi den nye etikettens Text-egenskap for denne formelen:

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

    Denne formelen viser en delegeringsadvarsel, men du kan ignorere den fordi ingen enkelt ordre vil inneholde mer enn 500 produkter.

  7. I kategorien Hjem setter du inn den nye etikettens tekstjustering til Høyre:

    Endre justering.

  8. Kopier og lim inn denne etikettkontrollen, og endre deretter størrelsen på og flytt kopien under Utvidet-kolonnen.

  9. Angi kopiens Text-egenskap for denne formelen:

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

    Denne formelen viser en delegeringsadvarsel, men du kan ignorere den fordi ingen enkelt ordre vil inneholde mer enn 500 produkter.

    Vis totalkostnad for ordre.

Legge til plass for nye detaljer

Du kan vise data i et hvilket som helst galleri, men du kan ikke oppdatere eller legge til oppføringer. Du skal legge til et område under detaljgalleriet der brukeren kan konfigurere en oppføring i Ordredetaljer-tabellen og sette inn oppføringen i en ordre.

  1. Reduser høyden på detaljgalleriet nok til å gjøre plass til et redigeringsområde med ett element i galleriet.

    Her legger du til kontroller, slik at brukeren kan legge til en ordredetalj:

    Forkorte detaljgalleriet.

  2. I kategorien Sett inn setter du inn en etikett, og deretter endrer du størrelsen på og flytter den under detaljgalleriet.

    Sett inn etikett.

  3. Dobbeltklikk teksten til den nye etiketten, og trykk deretter Delete.

  4. I kategorien Hjem setter du inn den nye etikettens Fyll-farge til LightBlue:

    Endre etikettens fyll til lys blå.

Velge et produkt

  1. I Sett inn-kategorien velger du Kontroller > Kombinasjonsboks:

    Sett inn kombinasjonsboks.

    Kombinasjonsboks-kontrollen vises øverst i venstre hjørne.

  2. I undermenydialogboksen velger du Ordeprodukter-datakilden.

  3. I kategorien Egenskaper for kombinasjonsboksen velger du Rediger (ved siden av Felt) for å åpne Data-ruten. Kontroller at den primære teksten og SearchField er satt til nwind_productname.

    Du angir det logiske navnet fordi Data-ruten ikke støtter visningsnavn i dette tilfellet ennå:

    Angi den primære teksten for kombinasjonsboksen.

  4. Lukk Data-ruten.

  5. I kategorien Egenskaper, nær høyre kant, ruller du ned, deaktiverer Tillat flere valg og kontrollerer at Tillat søk er aktivert:

    Deaktiver flere valg og aktiver søk.

  6. Endre størrelse på og flytt kombinasjonsboksen til området i det lyseblå området, like under produktnavnkolonnen i detaljgalleriet:

    Flytt kombinasjonsboks.

    I denne kombinasjonsboksen angir brukeren en oppføring i Produkt-tabellen for Ordredetaljer-oppføringen som appen skal opprette.

  7. Velg pil ned i kombinasjonsboksen mens du holder nede Alt-tasten.

    Tips

    Hvis du holder nede Alt-tasten, kan du samhandle med kontroller i Power Apps Studio uten å åpne forhåndsvisningsmodus.

  8. Velg et produkt fra listen over produkter som vises.

    Velg et produkt i kombinasjonsboksen.

Legge til et produktbilde

  1. I kategorien Sett inn velger du Media > Bilde:

    Sett inn bilde-kontroll.

    Bilde-kontrollen vises øverst i venstre hjørne:

    Standardplassering for bildekontroll.

  2. Endre størrelse på og flytt bildet til det lyseblå området under de andre produktbildene og ved siden av kombinasjonsboksen.

  3. Angi Image-egenskapen for bildet til:

    ComboBox1.Selected.Picture
    

    Angi Image-egenskapen for bildet.

    Du bruker det samme knepet som du brukte til å vise bildet med ansatte i sammendragsskjemaet. Egenskapen Selected for kombinasjonsboksen returnerer hele oppføringen for produktet brukeren velger, inkludert Bilde-feltet.

Legge til en mengdeboks

  1. I Sett inn-kategorien velger du Tekst > Tekstinndata:

    Legg til tekstinndataboks.

    Tekstinndata-kontrollen vises øverst i venstre hjørne:

    Standardplassering for tekstinndataboks.

  2. Endre størrelse på og flytt tekstinndataboksen til høyre for kombinasjonsboksen, under mengdekolonnen i detaljgalleriet:

    Endre størrelse på og flytte tekstinndataboks.

    Ved hjelp av denne tekstinndataboksen må brukeren angi Antall-feltet i Ordredetaljer-oppføringen.

  3. Angi Standard-property for denne kontrollen til "":

    Angi egenskapen Default i tekstinndataboksen.

  4. I kategorien Hjem endrer du tekstjusteringen for denne kontrollen til Høyre:

    Endre justering for kontrollen til høyre.

Vise enheten og utvidede priser

  1. I kategorien Sett inn setter du inn en Etikett-kontroll.

    Etiketten vises øverst i venstre hjørne på skjermen:

    Sett inn en etikett.

  2. Endre størrelse på og flytt etiketten til høyre for tekstinndata kontrollen, og sett etikettens Text-egenskap til denne formelen:

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

    Angi etikettens Text-egenskap.

    Denne kontrollen viser Listepris fra Ordreprodukter-tabellen. Denne verdien fastsetter Enhetspris-feltet i Ordredetaljer-oppføringen.

    Obs!

    I dette scenariet er verdien skrivebeskyttet, men andre scenarioer kan kreve at appens bruker endrer den. I slike tilfeller kan du bruke en Tekstinndata-kontroll og angi Default-egenskap til Listepris.

  3. I kategorien Hjem endrer du tekstjusteringen for listeprisetiketten til Høyre:

    Endre justering for kontrollen til høyre side.

  4. Kopier og lim inn etiketten for listeprisetikett, og endre deretter størrelsen på og flytt kopien til høyre for listeprisetiketten.

  5. Angi den nye etikettens Text-egenskap for denne formelen:

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

    Angi den nye etikettens Text-egenskap.

    Denne kontrollen viser den utvidede prisen basert på antallet som appbrukeren angav og listeprisen for produktet som appbrukeren valgte. Dette er rent informativt for appens bruker.

  6. Dobbeltklikk tekstinndata-kontrollen for antall, og skriv deretter inn et tall.

    Utvidet pris-etiketten beregnes på nytt for å vise den nye verdien:

    Angi et antall, og vis den utvidede prisen.

Legge til et Legg til-ikon

  1. I kategorien Sett inn velger du Ikoner > Legg til:

    Sett inn Legg til-ikon.

    Ikonet vises øverst i venstre hjørne på skjermen.

    Standardplassering for Legg til-ikon.

  2. Endre størrelse på og flytt dette ikonet til høyre kant av det lyseblå området, og angi deretter ikonets OnSelect til denne formelen:

    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 )
    

    Angi ikonet for egenskapen OnSelect.

    Generelt oppdaterer og oppretter Patch-funksjonen oppføringer, og de bestemte argumentene i denne formelen bestemmer de nøyaktige endringene som funksjonen vil gjøre.

    • Det første argumentet angir datakilden (i dette tilfellet Ordredetaljer-tabellen) der funksjonen skal oppdatere eller opprette en oppføring.

    • Det andre argumentet angir at funksjonen skal opprette en oppføring med standardverdiene for Ordredetaljer-tabellen med mindre annet er angitt i det tredje argumentet.

    • Det tredje argumentet angir at fire kolonner i den nye oppføringen skal inneholde verdier fra brukeren.

      • Ordre-kolonnen inneholder nummeret på ordren som brukeren valgte i ordregalleriet.
      • Produkt-kolonnen vil inneholde navnet på produktet som brukeren valgte i kombinasjonsboksen som viser produkter.
      • Antall-kolonnen inneholder verdien som brukeren angav i boksen for tekstinndata.
      • Enhetspris-kolonnen vil inneholde listeprisen for produktet som brukeren valgte for denne ordredetaljen.

    Obs!

    Du kan bygge formler som bruker data fra en hvilken som helst kolonne (i Ordreprodukter-tabellen), for produktet som appbrukeren velger i kombinasjonsboksen der produkter vises. Når brukeren velger en oppføring i Ordreprodukter-tabellen, vises ikke bare produktnavnet i denne kombinasjonsboksen, men også produktets enhetspris vises i en etikett. Hver oppslagsverdi i en lerretsapp henviser til en hel oppføring, ikke bare en primærnøkkel.

    Oppdater-funksjonen sikrer at Ordrer-tabellen gjenspeiler oppføringen du akkurat har lagt til i Ordredetaljer-tabellen. Tilbakestill-funksjonen fjerner data for produkt, antall og enhetspris, slik at brukeren enkelt kan opprette ytterligere ordredetaljer for den samme ordren.

  3. Trykk på F5, og velg deretter Legg til-ikonet.

    Ordren gjenspeiler informasjonen du har angitt:

    Animasjon av å legge til en ordredetalj.

  4. (valgfritt) Legg til et nytt element i ordren.

  5. Trykk ESC for å lukke forhåndsvisningsmodus.

Fjerne en ordredetalj

  1. På midten av skjermen velger du malen i detaljgalleriet:

    Velg gallerimal.

  2. I kategorien Sett inn velger du Ikoner > Papirkurv:

    Sett inn papirkurvikon.

    Ikonet Papirkurv vises øverst i venstre hjørne av galleriets mal.

    Standardplassering for ikon.

  3. Endre størrelse på og flytt Papirkurv-ikonet til høyre side av detaljgalleriets mal, og angi ikonets OnSelect-egenskap til denne formelen:

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

    Angi ikonets OnSelect-egenskap.

    I skrivende stund kan du ikke fjerne en oppføring direkte fra en relasjon, så Fjern-funksjonen fjerner en oppføring direkte fra den relaterte tabellen. ThisItem angir oppføringen som skal fjernes, tatt fra den samme oppføringen i detaljgalleriet der Papirkurv-ikonet vises.

    Operasjonen bruker hurtigbufrede data, så Oppdater-funksjonen informerer Ordrer-tabellen om at appen har endret en av de relaterte tabellene.

  4. Trykk på F5 for å åpne forhåndsvisningsmodus, og velg deretter Papirkurv-ikonet ved siden av hver Ordredetaljer-oppføring du vil fjerne fra ordren.

  5. Prøv å legge til og fjerne ulike ordredetaljer fra ordrene:

    Animasjon av å legge og fjerne ordredetaljer.

Konklusjon

For å oppsummere har du lagt til et annet galleri for å vise ordredetaljer og kontroller og lagt til og fjernet ordredetaljer i appen. Du brukte disse elementene:

  • En ny gallerikontroll, koblet til ordregalleriet via en én-til-mange-relasjon: Gallery2.Items = Gallery1.Selected.'Order Details'
  • En mange-til-én-relasjon fra Ordredetaljer-tabellen til Ordeprodukter-tabellen: ThisItem.Product.'Product Name' og ThisItem.Product.Picture
  • Choices-funksjonen for å hente en liste over produkter: Choices( 'Order Details'.Product' )
  • Selected-egenskapen for en kombinasjonsboks er den fullstendige mange-til-én-relaterte oppføringen: ComboBox1.Selected.Picture og ComboBox1.Selected.'List Price'
  • Patch-funksjonen for å opprette en Ordredetaljer-oppføring: Patch( 'Order Details', Defaults( 'Order Details' ), ... )
  • Fjern-funksjonen for å slette en Ordredetaljer-oppføring: Remove( 'Order Details', ThisItem )

Denne emneserien har vært til opplæring og gitt en rask gjennomgang av bruk av Dataverse-relasjoner og valg i en lerretsapp. Før du frigir apper til produksjon bør du ta hensyn til feltvalidering, feilhåndtering og mange andre faktorer.

Obs!

Kan du fortelle oss om språkinnstillingene for dokumentasjonen? Ta en kort undersøkelse. (vær oppmerksom på at denne undersøkelsen er på engelsk)

Undersøkelsen tar rundt sju minutter. Det blir ikke samlet inn noen personopplysninger (personvernerklæring).