Re: MenuItem změna obrázku po najetí myši
Datum:
11.9.2010 15:42
Autor:
Tomáš Herceg
Hodnocení autora:
1673
Příspěvků:
3536
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/...").