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
namepří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
targetCollectioncontrolů<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
validateAsnastaven 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.