Potíž je v tom, že label hledáte pomocí FindControl v celém Menu, ale on je tam několikrát (v akždé položce jednou). Hledejte jen v e.Item. To samé s tím obrázkem - tam navíc hledáte v naming containeru komponenty Menu, což je ještě větší oblast. Opět hledejte v e.Item. StaticItemTemplate je jen šablona, která se pro každou položku zopakuje. e.Item odkazuje na instanci té šablony, ta je ve stránce pochopitelně víckrát - jednou pro každou renderovanou menu položku. Abyste v tom měl jasno - komponenty v ASP.NET mají vlastnost NamingContainer, které odkazují na nadřazený naming container. Pro ilustraci - každá položka menu je naming container, proto může každá z nich obsahovat komponentu Label1. Pokud tedy dáte e.Item.NamingContainer, vrátí vám to rodičovský naming container, tedy komponentu Menu. Pokud zavoláte Menu1.NamingContainer, dostanete například ContentPlaceHolder. Naming container je vždycky taková část stránky, v níž nemohou mít dvě komponenty stejné ID. A ještě u té cesty - aby vám to fungovalo 100% i ze stránek, které nejsou v kořenovém adresáři, jako cestu k obrázku dosaďte Page.ResolveClientUrl("~/App_Themes/...").
|