Kaskádové seznamy pomáhají uživatelům rychleji vyplňovat formuláře a zajišťují, že uživatelé zadávají data správně. Tento článek popisuje, jak vytvořit a naplnit kaskádové seznamy daty. V aplikaci systém Microsoft Office InfoPath můžete naplnit seznam daty, která používají hodnoty z formuláře, hodnoty z externího dokumentu XML (Extensible Markup Language) nebo hodnoty z databáze aplikace systém Microsoft Office Access.
V tomto článku
Co je kaskádový seznam?
Kaskádový seznam je seznam s volbami, které se mění na základě hodnoty, kterou uživatel vybere v jiném seznamu. Pokud například uživatel klikne na Koření v poli Kategorie zobrazeném na následujícím obrázku, zobrazí se v poli Produkty seznam koření.
V následujících částech se dozvíte, jak navrhnout šablonu formuláře se dvěma seznamy, kde je druhý seznam filtrovaný na základě hodnoty, kterou uživatel vybere z prvního seznamu. Když se změní hodnota v prvním seznamu, filtr se automaticky použije na druhý seznam, který změní jeho hodnoty.
Aspekty kompatibility
Filtry lze použít pouze v šablonách formulářů, které jsou navržené tak, aby byly vyplněny v aplikaci InfoPath. Filtry nejsou k dispozici v šablonách formulářů kompatibilních s prohlížečem.
Krok 1: Vložení kaskádového seznamu
Chcete-li vytvořit kaskádový seznam, musíte do šablony formuláře vložit dva seznamy.
Poznámka
Když do šablony formuláře vložíte kaskádový seznam, ujistěte se, že tato dvě pole seznamu nejsou v oddílu s opakováním nebo v tabulce s opakováním.
- Pokud není vidět podokno úloh Ovládací prvky, klikněte na Další ovládací prvky v nabídce Vložit nebo stiskněte klávesy ALT+I, C.
- V části Vložit ovládací prvky v podokně úloh Ovládací prvky klikněte na Rozevírací seznam. Když uživatel vyplní formulář, který je založený na šabloně formuláře, výběr v tomto rozevíracím seznamu určí volby, které jsou k dispozici v druhém seznamu.
- Klikněte na Seznam. Šablona formuláře by teď měla obsahovat rozevírací seznam a standardní seznam.
- Poklikejte na rozevírací seznam, který jste vložili do šablony formuláře v kroku 2.
- V dialogovém okně Vlastnosti rozevíracího seznamu klikněte na kartu Data .
- Do pole Název pole zadejte listBox1 a klikněte na OK.
- Poklikejte na seznam, který jste vložili do šablony formuláře v kroku 3.
- V dialogovém okně Vlastnosti seznamu klikněte na kartu Data .
- Do pole Název pole zadejte listBox2Cascade a klikněte na OK.
Krok 2: Zadání dat
Teď, když jste do šablony formuláře vložili seznamy, musíte zadat data, která se budou zobrazovat. Pak musíte použít filtr, aby volby v druhém seznamu byly založené na výběru uživatele v prvním seznamu.
Tato část vysvětluje, jak propojit seznamy s daty pomocí tří běžných metod: přidání dat do samotného formuláře; připojení formuláře k existujícímu dokumentu XML, který obsahuje data; nebo připojení formuláře k databázi, která obsahuje data. Chcete-li dokončit vytváření kaskádového seznamu, klikněte na metodu, kterou chcete použít v následujícím seznamu.
Připojení k datům ve formuláři
V této části se dozvíte, jak naplnit seznamy daty z formuláře. Chcete-li to provést, musíte nejprve nakonfigurovat pole v šabloně formuláře, abyste mohli zadat názvy kategorií a sady produktů pro každou kategorii.
Konfigurace polí v šabloně formuláře
- Pokud není podokno úloh Zdroj dat viditelné, klikněte v nabídce Zobrazení na Zdroj dat.
- V podokně úloh Zdroj dat klikněte pravým tlačítkem na skupinu myFields a potom klikněte na Přidat.
- Do pole Název v dialogovém okně Přidat pole nebo skupinu zadejte CategoriesAndProducts.
- V seznamu Typ klikněte na Seskupovat.
- Zaškrtněte políčko Opakovat a klikněte na OK.
- V podokně úloh Zdroj dat klikněte pravým tlačítkem na skupinu CategoriesAndProducts .
- Do pole Název v dialogovém okně Přidat pole nebo skupinu zadejte Kategorie a klikněte na OK. Toto pole bude obsahovat názvy kategorií pro první seznam.
- Klikněte pravým tlačítkem na skupinu CategoriesAndProducts a potom klikněte na Přidat.
- Do pole Název v dialogovém okně Přidat pole nebo skupinu zadejte Produkt.
- Zaškrtněte políčko Opakovat a klikněte na OK. Toto pole bude obsahovat názvy produktů pro druhý seznam.
Vzhledem k tomu, že je tento seznam naplněný daty z formuláře, musí být data přidána do formuláře. K tomu budete muset vytvořit výchozí hodnoty pro pole Produkt a Kategorie .
Tip:
Můžete také vytvořit seznamy, které zobrazují hodnoty, které uživatelé zadají do formuláře sami. Chcete-li to provést, přidružte seznam k polím, která jsou svázána s ovládacími prvky ve formuláři. Když uživatel zadá hodnoty do ovládacích prvků, změní se volby v seznamu.
Vytvoření výchozích hodnot
- V nabídce Nástroje klikněte na Výchozí hodnoty.
- V dialogovém okně Upravit výchozí hodnoty vyberte ve skupině CategoriesAndProducts pole Category (nezaškrtáte políčko) a do pole Výchozí hodnota zadejte Seafood.
- Zaškrtněte pole Produkt (nerušte zaškrtnutí políčka) a pak do pole Výchozí hodnota zadejte Krabí maso.
- Klikněte pravým tlačítkem myši na pole Produkt a potom klikněte na Přidat další produkt výše. To vám umožní přidat druhý produkt pro Mořské plody jako výchozí hodnotu.
- Klikněte pravým tlačítkem na druhou instanci pole Produkt (nerušte zaškrtnutí políčka) a do pole Výchozí hodnota zadejte Salmon.
- Klikněte pravým tlačítkem na skupinu CategoriesAndProducts a potom klikněte na Přidat další kategorieAprodukty níže. To vám umožní přidat druhou kategorii jako výchozí hodnotu.
- Pomocí předchozích kroků určete výchozí hodnoty pro druhou instanci polí Kategorie a Produkt pro mléčné výrobky, Cheddar a Čokoládové mléko.
- Klikněte na OK.
Teď, když jste zadali výchozí hodnoty pro pole Produkt a Kategorie , můžete připojit první seznam k datům, která jste právě zadali.
Připojení prvního seznamu k datům
- V šabloně formuláře poklikejte na rozevírací seznam, který jste vložili dříve.
- Klikněte na kartu Data.
- V dialogovém okně Vlastnosti rozevíracího seznamu klikněte v části Položky seznamu na Vyhledat hodnoty ve zdroji dat formuláře.
- Klikněte na Vybrat XPath
vedle pole Položky . - V dialogovém okně Vybrat pole nebo skupinu klikněte ve skupině KategorieAProdukty na pole Kategorie a potom dvakrát klikněte na OK .
Teď musíte k datům připojit druhý seznam. Při vytváření tohoto datového připojení budete chtít použít filtr na druhý seznam. Tento filtr naplní druhý seznam příslušnými produkty na základě kategorie vybrané v prvním seznamu. Filtr porovná hodnotu vybranou v prvním seznamu (pole listBox1) se seznamem kategorií uložených ve formuláři (pole Kategorie).
Připojení druhého seznamu k datům
- V šabloně formuláře poklikejte na standardní seznam, který jste vložili dříve.
- Klikněte na kartu Data.
- V dialogovém okně Vlastnosti seznamu klikněte v části Položky seznamu na Vyhledat hodnoty ve zdroji dat formuláře.
- Klikněte na Vybrat XPath
vedle pole Položky . - V dialogovém okně Vybrat pole nebo skupinu klikněte ve skupině Kategorie AProdukty na pole Produkt a potom klikněte na Filtrovat data.
- V dialogovém okně Filtrovat data klikněte na Přidat.
- V dialogovém okně Zadat podmínky filtru klikněte na Vybrat pole nebo skupinu v prvním poli.
- V dialogovém okně Vybrat pole nebo skupinu klikněte na listBox1 a potom klikněte na OK.
- V dialogovém okně Zadat podmínky filtru klikněte na Vybrat pole nebo skupinu ve třetím poli.
- V dialogovém okně Vybrat pole nebo skupinu klikněte na pole Kategorie a potom kliknutím na OK zavřete všechna otevřená dialogová okna.
Teď, když jste připojili druhý seznam k datům a použili filtr, jste připravení otestovat seznamy, abyste se ujistili, že fungují správně.
Testování seznamů
Změny můžete otestovat kliknutím na Náhled na panelu nástrojů Standardní nebo stisknutím kláves CTRL+SHIFT+B.
V rozevíracím seznamu klikněte na Mořské plody. Standardní seznam by měl obsahovat prázdnou čáru, krabí maso a lososa.
Poznámka
Prázdný řádek umožňuje uživatelům vymazat výběr ze seznamu.
Pokud seznamy nefungují správně, zkontrolujte filtr druhého seznamu a ujistěte se, že porovnává pole listBox1 s polem Kategorie .
Připojení k externímu dokumentu XML
V této části se dozvíte, jak vytvořit datové připojení k dokumentu XML, který obsahuje hodnoty produktů a kategorií. Dokument XML bude vaším sekundárním zdrojem dat. Chcete-li vytvořit toto datové připojení, budete muset vytvořit dokument XML, přidružit seznamy v šabloně formuláře k dokumentu XML a potom použít filtr na druhý seznam, aby se seznam produktů odpovídajícím způsobem změnil.
Před přidružením formuláře k sekundárnímu zdroji dat je nutné vytvořit dokument XML.
Vytvoření dokumentu XML
Spusťte Poznámkový blok nebo jiný textový editor.
Zkopírujte následující data XML a vložte je do textového editoru:
<?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>Uložte soubor do počítače jako listBoxData.xml.
Teď, když jste vytvořili dokument XML, můžete ho připojit k šabloně formuláře. Tím se vytvoří sekundární zdroj dat.
Připojení dokumentu XML k šabloně formuláře
- V nabídce Nástroje klikněte na Datová připojení.
- V dialogovém okně Datová připojení klikněte na Přidat.
- V Průvodci datovým připojením klikněte na Přijmout data a potom klikněte na Další.
- Na další stránce průvodce klikněte na dokument XML a potom klikněte na Další.
- Na další stránce průvodce klikněte na Procházet, vyberte listBoxData.xml soubor, který jste uložili do počítače, a potom klikněte na Otevřít.
- Na další stránce průvodce klikněte na Zahrnout data jako soubor prostředků v šabloně formuláře nebo v části šablony a potom klikněte na Další.
- Na další stránce průvodce zadejte do pole Zadejte název tohoto datového připojenílistBoxDataXMLFile.
- Zaškrtněte políčko Automaticky načíst data při otevření formuláře . To zaručuje, že data seznamu budou k dispozici při každém otevření formuláře, místo aby se na něj uživatel musel dotazovat.
- Klikněte na Dokončit.
- V dialogovém okně Datová připojení klikněte na Zavřít.
Teď jste připraveni připojit první seznam v šabloně formuláře k datům v dokumentu XML.
Připojení prvního seznamu k datům
V šabloně formuláře poklikejte na rozevírací seznam, který jste vložili dříve.
Klikněte na kartu Data.
V dialogovém okně Vlastnosti rozevíracího seznamu klikněte v části Položky seznamu na Vyhledat hodnoty z externího zdroje dat.
V poli Zdroj dat klikněte na listBoxDataXMLFile.
Klikněte na Vybrat XPath
vedle pole Položky .V dialogovém okně Vybrat pole nebo skupinu klikněte ve skupině Kategorie AProdukty na pole Kategorie .
Poznámka
Žluté pozadí v dialogovém okně Vybrat pole nebo skupinu označuje, že pracujete se sekundárním zdrojem dat.
Poklikejte na tlačítko OK.
Teď budete muset připojit druhý seznam k dokumentu XML. Při vytváření tohoto datového připojení budete chtít použít filtr na druhý seznam. Tento filtr naplní druhý seznam příslušnými produkty na základě kategorie vybrané v prvním seznamu. Filtr porovná hodnotu vybranou v prvním seznamu (pole listBox1) se seznamem kategorií uložených ve formuláři (pole Kategorie).
Připojení druhého seznamu k datům
- V šabloně formuláře poklikejte na standardní seznam, který jste vložili dříve.
- Klikněte na kartu Data.
- V dialogovém okně Vlastnosti seznamu klikněte v části Položky seznamu na Vyhledat hodnoty z externího zdroje dat.
- V poli Zdroj dat klikněte na listBoxDataXMLFile.
- Klikněte na Vybrat XPath
vedle pole Položky . - V dialogovém okně Vybrat pole nebo skupinu rozbalte ve skupině KategorieAProdukty skupinu Produkty a potom klikněte na pole Produkt .
- Klikněte na Filtrovat data.
- V dialogovém okně Filtrovat data klikněte na Přidat.
- V dialogovém okně Zadat podmínky filtru klikněte na Vybrat pole nebo skupinu v prvním poli.
- V poli Zdroj dat v dialogovém okně Vybrat pole nebo skupinu klikněte na Hlavní.
- Klikněte na listBox1 a potom klikněte na OK.
- V dialogovém okně Zadat podmínky filtru klikněte na Vybrat pole nebo skupinu ve třetím poli.
- V poli Zdroj dat v dialogovém okně Vybrat pole nebo skupinu klikněte na listBoxDataXMLFile (Sekundární) a potom klikněte na Kategorie.
- Kliknutím na OK zavřete všechna otevřená dialogová okna.
Teď, když jste připojili druhý seznam k dokumentu XML a použili filtr, jste připraveni otestovat seznamy, abyste se ujistili, že fungují správně.
Testování seznamů
Změny můžete otestovat kliknutím na Náhled na panelu nástrojů Standardní nebo stisknutím kláves CTRL+SHIFT+B.
V rozevíracím seznamu klikněte na Mořské plody. Standardní seznam by měl obsahovat jenom prázdnou čáru, krabí maso a lososa.
Poznámka
Prázdný řádek umožňuje uživatelům vymazat výběr ze seznamu.
Pokud seznamy nefungují správně, zkontrolujte filtr druhého seznamu a ujistěte se, že porovnává pole listBox1 s polem Kategorie .
Připojení k databázi
V této části se dozvíte, jak vytvořit datové připojení ke dvěma tabulkám v accessové databázi. Chcete-li to provést, přidružíte seznamy v šabloně formuláře k databázi a potom použijete filtr na druhý seznam, aby se seznam zobrazený ve druhém seznamu odpovídajícím způsobem změnil na základě hodnoty vybrané v prvním seznamu. V tomto příkladu budeme předpokládat, že accessová databáze obsahuje dvě tabulky s názvem Kategorie a Produkty a že tyto dvě tabulky jsou vzájemně propojeny polem CategoryID, které se používá v každé tabulce.
Tabulka kategorií
| ID kategorie | Categoryname |
|---|---|
| 1 | Mořské plody |
| 2 | Mléčné výrobky |
Tabulka Products (Produkty)
| Productid | ID kategorie | NázevProduktu |
|---|---|---|
| 1 | 1 | Krabí maso |
| 2 | 1 | Losos |
| 3 | 2 | Čokoládové mléko |
| 4 | 2 | Čedar |
Připojení šablony formuláře ke zdroji dat
Nejprve musíte vytvořit datové připojení mezi šablonou formuláře a tabulkami v databázi. Vzhledem k tomu, že zobrazujete jenom data z databáze, nebudete je upravovat přímo, bude databáze Accessu sekundárním zdrojem dat pro šablonu formuláře.
V nabídce Nástroje klikněte na Datová připojení.
V dialogovém okně Datová připojení klikněte na Přidat.
V Průvodci datovým připojením klikněte na Přijmout data a potom klikněte na Další.
Na další stránce průvodce klikněte na Databáze (jenom Microsoft SQL Server nebo systém Microsoft Office Access) a potom klikněte na Další.
Na další stránce průvodce klikněte na Vybrat databázi a pak vyhledejte databázi accessu na pevném disku a poklikejte na ni.
V dialogovém okně Vybrat tabulku klikněte na tabulku obsahující data, která chcete zobrazit v prvním seznamu (v tomto příkladu v tabulce Kategorie), a potom klikněte na OK. Tím určíte tabulku jako primární tabulku pro datové připojení.
V průvodci klikněte na Přidat tabulku.
V dialogovém okně Přidat tabulku nebo dotaz klikněte na tabulku obsahující data, která chcete zobrazit v druhém seznamu (v tomto příkladu je to tabulka Produkty), a potom klikněte na Další.
V dialogovém okně Upravit relaci se ujistěte, že jsou propojovací pole správná. V tomto příkladu jsou tabulky vzájemně propojeny polem CategoryID.
Tip:
Pokud jsou propojovací pole nesprávná, vyberte je a klikněte na Odebrat relaci. Potom klikněte na Přidat relaci, vyberte správná pole a klikněte na OK.
Klikněte na Dokončit.
Poznámka
V tomto příkladu má tabulka categories relaci 1:N s tabulkou produktů, což znamená, že pro každou kategorii může existovat mnoho produktů. V databázi se tento druh relace obvykle vytváří pomocí polí s klíči. V tomto případě pole Klíč CategoryID umožňuje Aplikaci Access přidružit správnou sadu produktů k příslušné kategorii.
V průvodci zkontrolujte strukturu zdroje dat. Měly by se zobrazit dvě vzájemně propojené tabulky: primární tabulka a sekundární tabulka. Pokud chcete zobrazit jednotlivá pole v tabulce, zaškrtněte políčko Zobrazit sloupce tabulky . Jakmile dokončíte kontrolu datové struktury, klikněte na Další.
Zrušte zaškrtnutí políčka Uložit kopii dat v šabloně formuláře a potom klikněte na Další.
Do pole Zadejte název pro toto datové připojení zadejte na další stránce průvodce název datového připojení.
Zaškrtněte políčko Automaticky načíst data při otevření formuláře .
Klikněte na Dokončit a potom v dialogovém okně Datová připojení klikněte na Zavřít.
Připojení prvního seznamu k datům
Teď, když jste vytvořili datové připojení k sekundárnímu zdroji dat, můžete připojit první seznam v šabloně formuláře k tabulkám v databázi.
V šabloně formuláře poklikejte na rozevírací seznam, který jste vložili dříve.
Klikněte na kartu Data.
V dialogovém okně Vlastnosti rozevíracího seznamu klikněte v části Položky seznamu na Vyhledat hodnoty z externího zdroje dat.
V poli Zdroj dat se ujistěte, že je vybrané datové připojení, které jste vytvořili.
Klikněte na Vybrat XPath
vedle pole Položky .V dialogovém okně Vybrat pole nebo skupinu klikněte na název tabulky obsahující data, která chcete zobrazit v rozevíracím seznamu (v tomto příkladu d:Kategorie ) a potom klikněte na OK.
Poznámka
Žluté pozadí v dialogovém okně Vybrat pole nebo skupinu označuje, že pracujete se sekundárním zdrojem dat.
Klikněte na Vybrat XPath
vedle pole Hodnota .V dialogovém okně Vybrat pole nebo skupinu se ujistěte, že je vybrané propojovací pole (v tomto příkladu :CategoryID), a klikněte na OK. Jedná se o hodnotu, která se uloží, když uživatel provede výběr v seznamu.
Klikněte na Vybrat XPath
vedle pole Zobrazovaný název .V dialogovém okně Vybrat pole nebo skupinu klikněte na název pole, které chcete zobrazit v rozevíracím seznamu (v tomto příkladu :CategoryName).
Poklikejte na tlačítko OK.
Připojení druhého seznamu k datům
Teď budete muset připojit druhý seznam k databázi. Při vytváření tohoto datového připojení budete chtít použít filtr na druhý seznam. Tento filtr naplní druhý seznam příslušnými hodnotami na základě hodnoty vybrané v prvním seznamu.
V šabloně formuláře poklikejte na standardní seznam.
Klikněte na kartu Data.
V dialogovém okně Vlastnosti seznamu klikněte v části Položky seznamu na Vyhledat hodnoty z externího zdroje dat.
V poli Zdroj dat se ujistěte, že je vybrané datové připojení, které jste vytvořili.
Klikněte na Vybrat XPath
vedle pole Položky .V dialogovém okně Vybrat pole nebo skupinu rozbalte primární skupinu (v tomto příkladu d:Categories) a potom klikněte na sekundární skupinu, která odpovídá tabulce obsahující data, která chcete zobrazit v kaskádovém seznamu (v tomto příkladu Produkty).
Klikněte na Filtrovat data.
V dialogovém okně Filtrovat data klikněte na Přidat.
V dialogovém okně Zadat podmínky filtru se v prvním poli ujistěte, že je vybrané propojovací pole ze sekundární tabulky (v tomto příkladu Produkty).
Důležité
Pokud mají propojovací pole v obou tabulkách stejný název, ujistěte se, že jste vybrali tu správnou. Pole z každé tabulky jsou v seznamu seřazena společně. Proto můžete použít názvy okolních polí k určení, které pole je správné. V tomto příkladu vybereme pole CategoryID, které se zobrazí s ostatními poli z tabulky Produkty.
Ve třetím poli klikněte na Vybrat pole nebo skupinu.
V poli Zdroj dat v dialogovém okně Vybrat pole nebo skupinu klikněte na hlavní, klikněte na pole listBox1 a potom klikněte na OK.
Právě jste nakonfigurovali filtr, který porovnává hodnotu vybranou v rozevíracím seznamu (pole listBox1) se seznamem hodnot ve standardním seznamu.Třikrát klikněte na OK a vraťte se do dialogového okna Vlastnosti seznamu .
Klikněte na Vybrat XPath
vedle pole Hodnota .V dialogovém okně Vybrat pole nebo skupinu vyberte hodnotu, kterou chcete uložit, když uživatel provede výběr v seznamu. V tomto příkladu chceme uložit pole ProductID pro pozdější použití. Proto vybereme skupinu :P roductID a potom klikneme na OK.
Klikněte na Vybrat XPath
vedle pole Zobrazovaný název .V dialogovém okně Vybrat pole nebo skupinu klikněte na název pole, které chcete zobrazit v seznamu (v tomto příkladu :P název produktu).
Poklikejte na tlačítko OK.
Testování seznamů
Teď, když jste připojili druhý seznam k databázi a použili filtr, jste připraveni otestovat seznamy, abyste se ujistili, že fungují správně.
- Změny můžete otestovat kliknutím na Náhled na panelu nástrojů Standardní nebo stisknutím kláves CTRL+SHIFT+B.
- Vyberte hodnotu v rozevíracím seznamu. Standardní seznam by měl v závislosti na zvoleném spojovacím poli zobrazovat příslušné hodnoty ze sekundární tabulky.
Tip:
Pokud seznamy nefungují správně, zkontrolujte filtr druhého seznamu a ujistěte se, že porovnává pole listBox1 s polem CategoryID .