Zobrazení prvků kolekcí v administračním rozhraní

Ve výchozím nastavení se prvky kolekcí v administraci zobrazují pomocí prvního pole s textovým obsahem (či pomocí id proměnné, pokud proměnná obsahuje např. jen obrázková pole). Způsob zobrazování lze upravit, a to přímo v elementu Collection definujícím kolekci.

Definice zobrazení je vázana na definici kolekce, nikoliv na definici typu jejího prvku, což např. umožňuje prvky kolekce zobrazit jinak při editaci samotné kolekce a jinak, pokud je kolekce odkazována pomocí <Reference>.

Kolekce lze zobrazit buď textově (výchozí způsob) nebo obrázkově, obsahují-li její prvky obrázky.

Stejným způsobem lze upravit zobrazení prvků kolekce v polích typu <Reference><ReferenceCollection>, zde je možná však pouze textová podoba.

Textové zobrazení

K definici způsobu textového zobrazení kolekce slouží atribut itemFormat:

<Collection name="someCol"
            itemType="someItem"
            itemFormat="{someField}|someText: {anotherField}|etc..." />

Obsahem atributu itemFormat je řetězec, který určuje, jakým způsobem jsou prvky zobrazeny. Umožňuje interpolaci proměnných. Ta má trochu odlišnou syntaxi od interpolace proměnných v atributech controlů, princip je ale stejný. Atribut může obsahovat:

  • someText – libovolný statický text, nesmí obsahovat znaky {, }|
  • {someField} – jméno pole datového typu ve složených závorkách. Při zobrazení v administraci je nahrazeno hodnotou v poli uloženou. Zadává se bez tečky na počátku.
  • {someField:format} – jméno pole je možné doplnit uživatelsky definovaným formátem. Často se používá např. u data {someDateField:dayMonth}. Na rozdíl od výpisu v .aspx zde nelze použít formátovací řetězce ASP.NET
  • | – oddělovač sloupců, při jeho použití se kolekce zobrazí „jako tabulka“

Příklad

Máme kolekci produktů. Ke každému ukládáme jeho název, variantu a od kdy je k dispozici. V Site.config k tomu máme deklarovaný tento typ a kolekci:

<Type name="ProductItem">
    <SimpleText name="title" />
    <SimpleText name="option" />
    <Date name="availabilityDate" />
</Type>
...
<Collection name="productCol"
            itemType="ProductItem" />

V kolekci máme uloženy tyto prvky:

titleoptionavailabilityDate
Hrneks uchem1/11/2015
Nerozbitná sklenicebez potisku, průhledná5/11/2015
Tužkamodrá7/11/2015

Výchozí zobrazení kolekce v administraci bude tedy vypadat takto:

Hrnek
Nerozbitná sklenice
Tužka

Pokud použijeme atribut itemFormat s tímto obsahem:

<Collection name="product"
            itemType="ProductItem"
            itemFormat="{title} ({option}),                    
                        dostupné od {availabilityDate:dayMonth}" />

položky se zobrazí jako:

Hrnek (s uchem), dostupné od 1. 11.
Nerozbitná sklenice (bez potisku, průhledná), dostupné od 5. 11.
Tužka (modrá), dostupné od 7. 11.

* Předpokládáme, že máme uživatelský formát dayMonth definovaný jako format="d. M."

Pokud bychom chtěli uvést jméno v prvním sloupci a variantu ve druhém, pak použijeme znak |:

<Collection name="product"
            itemType="ProductItem"
            itemFormat="{title}|{option}" />

V administraci se nám ukáže:

Hrnek                 s uchem
Nerozbitná sklenice   bez potisku, průhledná
Tužka                 modrá

Formát položek v polích typu <Reference> a <ReferenceCollection>

Podobně jako v kolekcích samotných lze upravit formát zobrazení jednotlivých prvků v polích typu <Reference><ReferenceCollection>. Pravidla formátování jsou stejná jako je uvedeno výše, prvky pouze nelze řadit do tabulek. Formát jednotlivých prvků může vypadat např. takto:

<Reference name="someColRef"
           sourceCol="someCol"
           itemFormat="{someTitleField} ({someOptionField})" />

V referenčních polích nelze používat obrázkové zobrazení.

Obrázkové zobrazení

Obsahují-li prvky kolekce obrázek, lze kolekci zobrazit jako obrázkovou galerii. Pro tento způsob zobrazení je potřeba k příslušnému elementu Collection připojit atribut itemFormatType="img" a v atributu itemFormat uvést upřesňující nastavení:

<Collection name="someCol"
            itemFormatType="img"
            itemFormat="{someImgField}|
                        some text and/or {someField}|
                        some text and/or {anotherField}" />

Pro atribut itemFormat platí obdobná pravidla jako u textového zobrazení. Pomocí znaku | v něm mohou být uvedeny až tři části. V prvním musí být ve složených závorkách uvedeno jméno obrázkového pole. Druhá část se použije pro popisek pod obrázkem a třetí pro obsah HTML atributu title. Ten se objevuje jako tooltip při umístění kurzoru myši na obrázek.

Příklad

Máme kolekci fotografií. Ke každé fotografii zaznamenáváme jméno fotografie, jejího autora a jeho emailovou adresu. V Site.config k tomu máme deklarovaný tento typ:

<Type name="PhotoItem">
    <SimpleText name="title" />
    <Img name="img">
        <Size name="original" />
        <Size name="fullHD"
              width="1920"
              height="1080" />
        <Size name="thumb"
              width="320"
              height="200" />
    </Img>
    <SimpleText name="author" />
    <SimpleText name="authorEmail" />
</Type>

Kolekci chceme v administraci zobrazit jako galerii obrázků s viditelným jménem autora. Autorův email zobrazíme v tooltipu. Formát prvku v deklaraci kolekce tedy zapíšeme takto:

<Collection name="photoCol"
            itemType="PhotoItem"
            itemFormatType="img"
            itemFormat="{img}|{author}|email: {authorEmail}" />

Připomínky a postřehy

Máte-li nějakou připomínku, dobrý nápad nebo jste našli v dokumentaci chybu, rádi od vás uslyšíme.