Control slouží k vygenerování pole typu <select>
. Vnořené tagy <option>
lze zapsat přímo do .aspx, nebo je vložit z textového souboru, nebo z kolekce.
<f:select runat="server" id="someId" sourceCollection="someCollection" sourceField="someField" />
Control musí přijít do template formTemplate
controlů <f:collectionForm>
nebo <f:emailForm>
.
Atributy
class nepovinný [string, interpolace]
Hodnota atributu bude beze změny přenesena do výstupního kódu do atributu
class
.errText nepovinný [cesta k uzlu textového souboru]
Cesta k uzlu textového souboru, který obsahuje chybové hlášení pro případ, že data formulářového prvku neprojdou validací na straně serveru. Chybové hlášení se vypíše pomocí controlu
<f:errMsgs>
. Více o validaci viz Koncepty/Formuláře. Nelze kombinovat s atributemerrTextValue
.errTextValue nepovinný [string]
Text chybového hlášení pro případ, že data formulářového prvku neprojdou validací na straně serveru. Chybové hlášení se vypíše pomocí controlu
<f:errMsgs>
. Více o validaci viz Koncepty/Formuláře. Nelze kombinovat s atributemerrText
.id povinný [string]
Jedinečné jméno controlu. Pod tímto jménem je obsah controlu dostupný v šabloně emailu. Zároveň je toto jméno použito jako jméno prvku ve formuláři, tj. je zapsáno do atributu
name
příslušného HTML elementu.sourceCollection nepovinný [jméno kolekce]
Jméno kolekce, jejíž prvky se použijí pro vygenerování vnořených tagů
<option>
.sourceField nepovinný [jméno pole prvku kolekce]
Určuje, které pole prvku kolekce určené atributem
sourceCollection
, se použije pro vygenerování vnořených tagů<option>
. Není-li atribut uveden, použije se první textové pole.sourceText nepovinný [cesta k uzlu textového souboru]
Cesta k uzlu textového souboru k prvku, jehož elementy se použijí jako položky controlu. Příklad je uveden níže.
style nepovinný [string, interpolace]
Hodnota atributu bude beze změny přenesena do výstupního kódu do atributu
style
.targetField nepovinný [jméno pole]
Jméno pole prvku cílové kolekce, do kterého se uloží data formulářového prvku. (Cílová kolekce je určena atributem
targetCollection
controlů<f:emailForm>
nebo<f:collectionForm>
).title nepovinný [string, interpolace]
Hodnota atributu bude beze změny přenesena do výstupního kódu do atributu
title
.validateAs nepovinný [předdefinované hodnoty]
Způsob validace dat formulářového prvku. Více o validaci viz Koncepty/Formuláře.
validateData nepovinný [regulární výraz]
Regulární výraz, podle kterého se validaují data formulářového prvku, je-li atribut
validateAs
nastaven na hodnotuRegExp
. Více o validaci viz Koncepty/Formuláře.
Lze také použít atributy HTML pro události myši a klávesnice (onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup). Jejich obsah je přímo přepsán do výstupu.
Příklady
Přímý výčet položek v kódu stránky
Pro výčet položek přímo ve stránce se používá control <asp:listitem>
. Control je v namespace asp
, protože se jedná o standardní control .NET, nikoliv o control systému JellyPot. Z tohoto důvodu se u něj neuvádí ani atribut runat="server"
. Select pro výběr hodnocení článku by vypadal takto:
<f:select runat="server" id="rating"> <asp:listitem>super</asp:listitem> <asp:listitem>normál</asp:listitem> <asp:listitem>hrůza</asp:listitem> </f:select>
Načtení položek z textového souboru
Položky formulářového prvku select
lze načíst také z textového souboru. Výhodou oproti přímému výčtu je, že kód stránky může být jazykově nezávislý (viz Jazyky).
<f:select runat="server" id="rating" sourceText="Articles/Rating" />
V textovém souboru potom uvedeme např.:
<?xml version="1.0" encoding="utf-8" ?> <Texts xmlns="urn:Bet:ns:CmsTxt"> ... <Articles> <Rating> <Item>super</Item> <Item>normál</Item> <Item>hrůza</Item> </Rating> ... </Articles> ... </Texts>
Elementy obsažené v uzlu, na který odkazuje atribut sourceText
, budou použity pro vypsání vnořených HTML elementů <option>
. Na pojmenování elementů v textovém souboru nijak nezáleží, v příkladu jsme použili Item
.
Načtení položek z kolekce
Položky formulářového prvku select
lze načíst také z kolekce deklarované v Site.config. Stejně jako při načítání z textového souboru je oproti přímému výčtu výhodou, že kód stránky může být jazykově nezávislý (viz Jazyky). Takto lze navíc položky prvku select
snadno měnit editací v administraci.
<f:select runat="server" id="rating" sourceCollection="articleRatingCol" sourceField="title" />
V Site.config tedy musíme mít deklarovanou kolekci articleRatingCol
:
... <Vars> ... <Collection name="articleRatingCol" itemType="ArticleRatingItem" /> ... </Vars> ... <Types> ... <Type name="ArticleRatingItem"> <SimpleText name="title" /> <Text name="desc" /> <Text name="text" /> </Type> ... </Types> ...
Pokud kolekce articleRatingCol
obsahuje tři prvky a hodnota jejich pole title
je „super“, „normál“ a „hrůza“, dostaneme stejný výsledný kód jako v příkladu s textovým souborem.