Oprette en overlappende liste
Gælder for
Overlappende lister hjælper brugerne med at udfylde formularer hurtigere og er med til at sikre, at brugerne indtaster data korrekt. I denne artikel beskrives det, hvordan du opretter og udfylder overlappende lister med data. I Microsoft Office InfoPath kan du udfylde en liste med data, der bruger værdier fra formularen, værdier fra et eksternt XML-dokument (Extensible Markup Language) eller værdier fra en Microsoft Office Access-database.
Denne artikel indeholder
Hvad er en overlappende liste?
En overlappende liste er en liste med valgmuligheder, der ændres baseret på den værdi, som en bruger vælger på en anden liste. Hvis en bruger f.eks. klikker på Krydderier i feltet Kategorier , der er vist i følgende illustration, viser feltet Produkter en liste over krydderier.
I de følgende afsnit kan du se, hvordan du designer en formularskabelon med to lister, hvor det andet listefelt filtreres ud fra den værdi, en bruger vælger på den første liste. Når værdien i den første liste ændres, anvendes filteret automatisk på den anden liste, hvilket ændrer dens værdier.
Overvejelser om kompatibilitet
Filtre kan kun bruges i formularskabeloner, der er udviklet til at blive udfyldt i InfoPath. Filtre er ikke tilgængelige i browserkompatible formularskabeloner.
Trin 1: Indsæt en overlappende liste
Hvis du vil oprette en overlappende liste, skal du indsætte to lister i formularskabelonen.
Bemærk
Når du indsætter en overlappende liste i formularskabelonen, skal du sikre dig, at de to listefelter ikke er i en gentaget sektion eller gentaget tabel.
- Hvis opgaveruden Kontrolelementer ikke er synlig, skal du klikke på Flere kontrolelementer i menuen Indsæt eller trykke på Alt+I, C.
- Klik på Rulleliste under Indsæt kontrolelementer i opgaveruden Kontrolelementer. Når en bruger udfylder en formular, der er baseret på din formularskabelon, bestemmer markeringen på denne rulleliste de valgmuligheder, der er tilgængelige på den anden liste.
- Klik på Liste. Din formularskabelon bør nu indeholde en rulleliste og en standardliste.
- Dobbeltklik på den rulleliste, du indsatte i formularskabelonen i trin 2.
- Klik på fanen Data i dialogboksen Egenskaber for rulleliste.
- Skriv listBox1 i feltet Feltnavn, og klik derefter på OK.
- Dobbeltklik på den liste, du har indsat i formularskabelonen i trin 3.
- Klik på fanen Data i dialogboksen Egenskaber for listefelt.
- Skriv listBox2Cascade i feltet Feltnavn, og klik derefter på OK.
Trin 2: Angiv dataene
Nu hvor du har indsat listefelterne i formularskabelonen, skal du angive de data, de skal vise. Derefter skal du anvende et filter, så valgmulighederne på den anden liste er baseret på brugerens valg på den første liste.
I dette afsnit forklares det, hvordan du forbinder listefelterne med data ved hjælp af tre almindelige metoder: tilføjelse af data til selve formularen, tilføjelse af data til selve formularen. oprette forbindelse mellem formularen og et eksisterende XML-dokument, der indeholder dataene. eller forbinde formularen med en database, der indeholder dataene. Klik på den metode, du vil bruge, på følgende liste for at afslutte oprettelsen af den overlappende liste.
- Oprette forbindelse til data i formularen
- Oprette forbindelse til et eksternt XML-dokument
- Oprette forbindelse til en database
Oprette forbindelse til data i formularen
I dette afsnit lærer du, hvordan du udfylder listefelterne med data fra formularen. For at gøre dette skal du først konfigurere felter i formularskabelonen, så du kan angive navnene på kategorierne og et sæt produkter for hver kategori.
Konfigurere felter i formularskabelonen
- Hvis opgaveruden Datakilde ikke er synlig, skal du klikke på Datakilde i menuen Vis .
- Højreklik på gruppen MineFelter i opgaveruden Datakilde, og klik derefter på Tilføj.
- Skriv CategoriesAndProducts i feltet Navn i dialogboksen Tilføj felt eller gruppe.
- Klik på Gruppér på listen Type.
- Markér afkrydsningsfeltet Gentaget , og klik derefter på OK.
- I opgaveruden Datakilde skal du højreklikke på gruppen CategoriesAndProducts .
- Skriv Kategori i dialogboksen Tilføj felt eller gruppe i feltet Navn, og klik derefter på OK. Dette felt indeholder navnene på kategorierne for den første liste.
- Højreklik på gruppen CategoriesAndProducts , og klik derefter på Tilføj.
- Skriv Produkt i feltet Navn i dialogboksen Tilføj felt eller gruppe.
- Markér afkrydsningsfeltet Gentaget , og klik derefter på OK. Dette felt indeholder navnene på produkterne på den anden liste.
Da denne liste er udfyldt med data fra formularen, skal dataene føjes til formularen. For at gøre dette skal du oprette standardværdier for felterne Produkt og Kategori .
Tip
Du kan også oprette lister, der viser værdier, som brugerne selv skriver i formularen. Det gør du ved at knytte listen til felter, der er bundet til kontrolelementer i formularen. Når en bruger indtaster værdier i kontrolelementerne, ændres valgmulighederne på listen.
Opret standardværdier
- Klik på Standardværdier i menuen Funktioner.
- I dialogboksen Rediger standardværdier i gruppen KategorierOgProdukter skal du vælge feltet Kategori (fjern ikke markeringen i afkrydsningsfeltet), og skriv derefter Fisk og skaldyr i feltet Standardværdi.
- Markér feltet Produkt (fjern ikke markeringen i afkrydsningsfeltet), og skriv derefter Krabbekød i feltet Standardværdi.
- Højreklik på feltet Produkt , og klik derefter på Tilføj et andet produkt ovenfor. Dette giver dig mulighed for at tilføje endnu et produkt til Fisk og skaldyr som en standardværdi.
- Højreklik på den anden forekomst af feltet Produkt (fjern ikke markeringen i afkrydsningsfeltet), og skriv derefter Laks i feltet Standardværdi.
- Højreklik på gruppen CategoriesAndProducts , og klik derefter på Tilføj endnu en CategoriesAndProducts nedenfor. Dette giver dig mulighed for at tilføje en anden kategori som en standardværdi.
- Brug de forrige trin til at angive standardværdierne for den anden forekomst af felterne Kategori og Produkt til henholdsvis Mejeriprodukter, Cheddar og Chokolademælk.
- Klik på OK.
Nu hvor du har angivet standardværdierne for felterne Produkt og Kategori , kan du forbinde den første liste med de data, du lige har angivet.
Forbinde den første liste med dataene
- Dobbeltklik på den rulleliste, du har indsat tidligere, i formularskabelonen.
- Klik på fanen Data.
- I dialogboksen Egenskaber for rulleliste under Listeelementer skal du klikke på Slå værdier op i formularens datakilde.
- Klik på Vælg XPath
ud for feltet Poster . - I dialogboksen Vælg et felt eller en gruppe i gruppen KategorierOgProdukter skal du klikke på feltet Kategori og derefter klikke på OK to gange.
Nu skal du forbinde det andet listefelt med dataene. Mens du opretter denne dataforbindelse, skal du anvende et filter på den anden liste. Dette filter udfylder den anden liste med de relevante produkter baseret på den kategori, der er valgt på den første liste. Filteret sammenligner den værdi, der er valgt på den første liste (listBox1-felt), med listen over kategorier, der er gemt i formularen (kategorifelt).
Forbind den anden liste til dataene
- Dobbeltklik på den standardliste, du har indsat tidligere, i formularskabelonen.
- Klik på fanen Data.
- I dialogboksen Egenskaber for listefelt under Listeelementer skal du klikke på Slå værdier op i formularens datakilde.
- Klik på Vælg XPath
ud for feltet Poster . - I dialogboksen Vælg et felt eller en gruppe i gruppen KategorierOgProdukter skal du klikke på feltet Produkt og derefter klikke på Filtrer data.
- Klik på Tilføj i dialogboksen Filtrer data.
- I dialogboksen Angiv filterbetingelser skal du klikke på Vælg et felt eller en gruppe i det første felt.
- Klik på listBox1 i dialogboksen Vælg et felt eller en gruppe, og klik derefter på OK.
- I dialogboksen Angiv filterbetingelser skal du klikke på Vælg et felt eller en gruppe i det tredje felt.
- I dialogboksen Vælg et felt eller en gruppe skal du klikke på feltet Kategori og derefter klikke på OK for at lukke alle åbne dialogbokse.
Nu hvor du har knyttet den anden liste til dataene og anvendt filteret, er du klar til at teste listefelterne for at sikre, at de fungerer korrekt.
Test listefelterne
Klik på Eksempel på værktøjslinjen Standard, eller tryk på Ctrl+Shift+B for at teste ændringerne.
Klik på Fisk og skaldyr på rullelisten. Standardlistefeltet skal vise en tom linje, krabbekød og laks.
Bemærk
Med den tomme linje kan brugerne rydde deres valg på listen.
Hvis listefelterne ikke fungerer korrekt, skal du gennemse filteret for den anden liste for at sikre, at det sammenligner listBox1-feltet med feltet Kategori .
Oprette forbindelse til et eksternt XML-dokument
I dette afsnit lærer du, hvordan du opretter en dataforbindelse til et XML-dokument, der indeholder produkt- og kategoriværdier. XML-dokumentet bliver din sekundære datakilde. Hvis du vil oprette denne dataforbindelse, skal du oprette XML-dokumentet, knytte listefelterne i formularskabelonen til XML-dokumentet og derefter anvende et filter på den anden liste, så listen over produkter ændres korrekt.
Før du kan knytte formularen til en sekundær datakilde, skal du oprette XML-dokumentet.
Oprette XML-dokumentet
Start Notesblok eller en anden teksteditor.
Kopiér og indsæt følgende XML-data i teksteditoren:
<?xml version="1.0" encoding="UTF-8"?> <ListBoxData> <CategoriesAndProducts> <Categories>Seafood</Categories> <Products> <Product>Crab meat</Product> </Products> <Products> <Product>Salmon</Product> </Products> </CategoriesAndProducts> <CategoriesAndProducts> <Categories>Dairy</Categories> <Products> <Product>Chocolate milk</Product> </Products> <Products> <Product>Cheddar</Product> </Products> </CategoriesAndProducts> </ListBoxData>Gem filen på computeren som listBoxData.xml.
Nu hvor du har oprettet et XML-dokument, kan du knytte det til formularskabelonen. Dette vil oprette en sekundær datakilde.
Knytte XML-dokumentet til formularskabelonen
- Klik på Dataforbindelser i menuen Funktioner.
- Klik på Tilføj i dialogboksen Dataforbindelser.
- Klik på Modtag data i guiden Dataforbindelse, og klik derefter på Næste.
- Klik på XML-dokument på den næste side i guiden, og klik derefter på Næste.
- På næste side i guiden skal du klikke på Gennemse, vælge den listBoxData.xml fil, du har gemt på computeren, og derefter klikke på Åbn.
- På den næste side i guiden skal du klikke på Medtag dataene som en ressourcefil i formularskabelonen eller skabelondelen og derefter klikke på Næste.
- Skriv listBoxDataXMLFile i feltet Angiv et navn til denne dataforbindelse på næste side i guiden.
- Markér afkrydsningsfeltet Hent automatisk data, når formularen åbnes . Dette sikrer, at listefeltets data vil være tilgængelige, hver gang formularen åbnes, i stedet for at en bruger skal forespørge efter den.
- Klik på Afslut.
- Klik på Luk i dialogboksen Dataforbindelser.
Nu er du klar til at forbinde den første liste i formularskabelonen med dataene i XML-dokumentet.
Forbinde den første liste med dataene
Dobbeltklik på den rulleliste, du har indsat tidligere, i formularskabelonen.
Klik på fanen Data.
I dialogboksen Egenskaber for rulleliste under Listeelementer skal du klikke på Slå værdier op fra en ekstern datakilde.
Klik på listBoxDataXMLFile i feltet Datakilde.
Klik på Vælg XPath
ud for feltet Poster .I dialogboksen Vælg et felt eller en gruppe i gruppen KategorierOgProdukter skal du klikke på feltet Kategorier .
Bemærk
Den gule baggrund i dialogboksen Vælg et felt eller en gruppe angiver, at du arbejder med en sekundær datakilde.
Klik på OK to gange.
Nu skal du forbinde det andet listefelt med XML-dokumentet. Mens du opretter denne dataforbindelse, skal du anvende et filter på den anden liste. Dette filter udfylder den anden liste med de relevante produkter baseret på den kategori, der er valgt på den første liste. Filteret sammenligner den værdi, der er valgt på den første liste (listBox1-felt), med listen over kategorier, der er gemt i formularen (kategorifelt).
Forbind den anden liste til dataene
- Dobbeltklik på den standardliste, du har indsat tidligere, i formularskabelonen.
- Klik på fanen Data.
- I dialogboksen Egenskaber for listefelt under Listeelementer skal du klikke på Slå værdier op fra en ekstern datakilde.
- Klik på listBoxDataXMLFile i feltet Datakilde.
- Klik på Vælg XPath
ud for feltet Poster . - I dialogboksen Vælg et felt eller en gruppe i gruppen KategorierOgProdukter skal du udvide gruppen Produkter og derefter klikke på feltet Produkt .
- Klik på Filtrer data.
- Klik på Tilføj i dialogboksen Filtrer data.
- I dialogboksen Angiv filterbetingelser skal du klikke på Vælg et felt eller en gruppe i det første felt.
- Klik på Hoved i dialogboksen Vælg et felt eller en gruppe i feltet Datakilde.
- Klik på listBox1, og klik derefter på OK.
- I dialogboksen Angiv filterbetingelser skal du klikke på Vælg et felt eller en gruppe i det tredje felt.
- Klik på listBoxDataXMLFile (Secondary) i dialogboksen Vælg et felt eller en gruppe i feltet Datakilde, og klik derefter på Kategorier.
- Klik på OK for at lukke alle åbne dialogbokse.
Nu hvor du har forbundet det andet listefelt til XML-dokumentet og anvendt filteret, er du klar til at teste listefelterne for at sikre, at de fungerer korrekt.
Test listefelterne
Klik på Eksempel på værktøjslinjen Standard, eller tryk på Ctrl+Shift+B for at teste ændringerne.
Klik på Fisk og skaldyr på rullelisten. Standardlistefeltet bør kun vise en tom linje, krabbekød og laks.
Bemærk
Med den tomme linje kan brugerne rydde deres valg på listen.
Hvis listefelterne ikke fungerer korrekt, skal du gennemse filteret for den anden liste for at sikre, at det sammenligner listBox1-feltet med feltet Kategori .
Oprette forbindelse til en database
I dette afsnit lærer du, hvordan du opretter en dataforbindelse til to tabeller i en Access-database. For at gøre dette skal du knytte listefelterne i formularskabelonen til databasen og derefter anvende et filter på den anden liste, så den liste, der vises på den anden liste, ændres korrekt baseret på den værdi, der er valgt på den første liste. I dette eksempel antager vi, at Access-databasen indeholder to tabeller kaldet Kategorier og Produkter, og at de to tabeller er relateret til hinanden af feltet Kategori-id, som bruges i hver tabel.
Tabellen Kategorier
| CategoryID | Kategorinavn |
|---|---|
| 1 | Skaldyr |
| 2 | Mejeriprodukter |
Tabellen Produkter
| Instruktion | CategoryID | Produktnavn |
|---|---|---|
| 1 | 1 | Krabbekød |
| 2 | 1 | Laks |
| 3 | 2 | Chokolademælk |
| 4 | 2 | Cheddar |
Forbind formularskabelonen med datakilden
Først skal du oprette en dataforbindelse mellem formularskabelonen og tabellerne i databasen. Da du kun får vist dataene fra databasen i stedet for at redigere dem direkte, vil Access-databasen være en sekundær datakilde for formularskabelonen.
Klik på Dataforbindelser i menuen Funktioner.
Klik på Tilføj i dialogboksen Dataforbindelser.
Klik på Modtag data i guiden Dataforbindelse, og klik derefter på Næste.
På den næste side i guiden skal du klikke på Database (kun Microsoft SQL Server eller Microsoft Office Access) og derefter klikke på Næste.
På den næste side i guiden skal du klikke på Vælg database og derefter gå til og dobbeltklikke på Access-databasen på harddisken.
I dialogboksen Vælg tabel skal du klikke på den tabel, der indeholder de data, du vil vise på den første liste (i dette eksempel tabellen Kategorier), og derefter skal du klikke på OK. Dette angiver tabellen som den primære tabel for dataforbindelsen.
Klik på Tilføj tabel i guiden.
I dialogboksen Tilføj tabel eller Forespørgsel skal du klikke på den tabel, der indeholder de data, du vil vise på den anden liste (i dette eksempel tabellen Produkter), og derefter klikke på Næste.
I dialogboksen Rediger relation skal du kontrollere, at de sammenkædede felter er korrekte. I dette eksempel er tabellerne relateret til hinanden ved hjælp af feltet Kategori-id.
Tip
Hvis de forbindende felter er forkerte, skal du markere felterne og derefter klikke på Fjern relation. Klik derefter på Tilføj relation, vælg de korrekte felter, og klik derefter på OK.
Klik på Afslut.
Bemærk
I dette eksempel har kategoritabellen en en til mange-relation til produkttabellen, hvilket betyder, at der kan være mange produkter for hver enkelt kategori. I en database oprettes denne type relation normalt ved hjælp af nøglefelter. I dette tilfælde giver nøglefeltet CategoryID Access mulighed for at knytte det korrekte sæt produkter til den relevante kategori.
Gennemse datakildestrukturen i guiden. Du bør kunne se to tabeller, der er forbundet til hinanden: Den primære tabel og den sekundære tabel. Hvis du vil se de enkelte felter i tabellen, skal du markere afkrydsningsfeltet Vis tabelkolonner . Når du er færdig med at gennemgå datastrukturen, skal du klikke på Næste.
Fjern markeringen i afkrydsningsfeltet Gem en kopi af dataene i formularskabelonen , og klik derefter på Næste.
Skriv et navn til dataforbindelsen på næste side i guiden i feltet Angiv et navn til denne dataforbindelse.
Markér afkrydsningsfeltet Hent automatisk data, når formularen åbnes .
Klik på Udfør, og klik derefter på Luk i dialogboksen Dataforbindelser .
Forbinde den første liste med data
Nu hvor du har oprettet en dataforbindelse til den sekundære datakilde, kan du forbinde det første listefelt i formularskabelonen med tabellerne i databasen.
Dobbeltklik på den rulleliste, du indsatte tidligere, i formularskabelonen.
Klik på fanen Data.
I dialogboksen Egenskaber for rulleliste under Listeelementer skal du klikke på Slå værdier op fra en ekstern datakilde.
Sørg for, at den dataforbindelse, du har oprettet, er markeret i feltet Datakilde .
Klik på Vælg XPath
ud for feltet Poster .I dialogboksen Vælg et felt eller en gruppe skal du klikke på navnet på den tabel, der indeholder de data, du vil vise på rullelisten (i dette eksempel d:Kategorier ), og derefter klikke på OK.
Bemærk
Den gule baggrund i dialogboksen Vælg et felt eller en gruppe angiver, at du arbejder med en sekundær datakilde.
Klik på Vælg XPath
ud for feltet Værdi .I dialogboksen Vælg et felt eller en gruppe skal du sørge for, at det forbundne felt (i dette eksempel :Kategori-id) er markeret, og derefter skal du klikke på OK. Dette er den værdi, der gemmes, når brugeren foretager et valg på listen.
Klik på Vælg XPath
ud for feltet Vist navn .I dialogboksen Vælg et felt eller en gruppe skal du klikke på navnet på det felt, du vil have vist på rullelisten (i dette eksempel :Kategorinavn).
Klik på OK to gange.
Forbind det andet listefelt til data
Nu skal du forbinde den anden liste med databasen. Mens du opretter denne dataforbindelse, skal du anvende et filter på den anden liste. Dette filter udfylder det andet listefelt med de relevante værdier baseret på den værdi, der er valgt på den første liste.
Dobbeltklik på standardlisten i formularskabelonen.
Klik på fanen Data.
I dialogboksen Egenskaber for listefelt under Listeelementer skal du klikke på Slå værdier op fra en ekstern datakilde.
Sørg for, at den dataforbindelse, du har oprettet, er markeret i feltet Datakilde .
Klik på Vælg XPath
ud for feltet Poster .I dialogboksen Vælg et felt eller en gruppe skal du udvide den primære gruppe (i dette eksempel d:Kategorier) og derefter klikke på den sekundære gruppe, der svarer til den tabel, der indeholder de data, der skal vises, i feltet overlappende liste (i dette eksempel Produkter).
Klik på Filtrer data.
Klik på Tilføj i dialogboksen Filtrer data.
I det første felt i dialogboksen Angiv filterbetingelser skal du sørge for, at forbindelsesfeltet fra den sekundære tabel (i dette eksempel Produkter) er markeret.
Vigtig
Hvis de forbindende felter har samme navn i begge tabeller, skal du kontrollere, at du vælger det rigtige. Felterne fra hver tabel sorteres sammen på listen. Du kan derfor bruge de omgivende feltnavne til at bestemme, hvilket der er det rigtige. I dette eksempel vælger vi feltet Kategori-id, der vises sammen med de andre felter fra tabellen Produkter.
I det tredje felt skal du klikke på Vælg et felt eller en gruppe.
Klik på Hoved i dialogboksen Vælg et felt eller en gruppe i feltet Datakilde, klik på listBox1-feltet, og klik derefter på OK.
Du har nu konfigureret et filter, der sammenligner den værdi, der er valgt på rullelisten (listBox1-felt) med listen over værdier på standardlisten.Klik på OK tre gange for at vende tilbage til dialogboksen Egenskaber for listefelt .
Klik på Vælg XPath
ud for feltet Værdi .I dialogboksen Vælg et felt eller en gruppe skal du vælge den værdi, du vil gemme, når brugeren foretager et valg på listen. I dette eksempel vil vi gemme feltet Produkt-id til senere brug. Derfor vælger vi gruppen :P roductID og klikker derefter på OK.
Klik på Vælg XPath
ud for feltet Vist navn .I dialogboksen Vælg et felt eller en gruppe skal du klikke på navnet på det felt, du vil vise på listen (i dette eksempel :P roductName).
Klik på OK to gange.
Test listefelterne
Nu hvor du har forbundet den anden liste til databasen og anvendt filteret, er du klar til at teste listefelterne for at sikre, at de fungerer korrekt.
- Klik på Eksempel på værktøjslinjen Standard, eller tryk på Ctrl+Shift+B for at teste ændringerne.
- Vælg en værdi på rullelisten. Standardlisten skal vise de relevante værdier fra den sekundære tabel, afhængigt af det valgte forbindelsesfelt.
Tip
Hvis listefelterne ikke fungerer korrekt, skal du gennemse filteret for det andet listefelt for at sikre, at det sammenligner listBox1-feltet med feltet Kategori-id .