Ich möchte eine Menü, welches in der einer Sitemap ausgelagert ist, in einer Liste ausgeben.
Beispiel:
<ul>
<li> Menüpunkt 1</li>
<li> Menüpunkt 2</li>
<ul>
<li>Untermenüpunkt 2.1</li>
<li>Untermenüpunkt 2.1</li>
</ul>
<li> Menüpunkt 3</li>
</ul>
Die Formatierung dieses Menüs steuere ich anschließend über css.
Die Unterpunkte sollen nur angezeigt werden wenn auch der darüberliegende Menüpunkt aktiviert wurde.
Beispiel:
Menüpunkt 1
Menüpunkt 2 <aktiv>
- Untermenüpunkt 2.1
- Untermenüpunkt 2.2
Menüpunkt 3
Mit meinem Code funktioniert soweit auch schon ganz gut bis ich eine 3 Ebene einbaue bzw. den Menüpunkt 2.1 anklicke.
Beispiel:
Menüpunkt 1
Menüpunkt 2
- Untermenüpunkt 2.1 <aktiv>
- Untermenüpunkt 2.2.1
- Untermenüpunkt 2.2.2
- Untermenüpunkt 2.1
Menüpunkt 3
Wenn ich den Untermenüpunkt 2.1 anklicke wird nur noch die erste Menüebene angezeigt.
Mein Problem ist im Moment vermutlich diese Zeile -->
if (oNode == oSiteMapProvider.CurrentNode && oNode.HasChildNodes)
Kann mir jemand einen Lösungsansatz mitteilen?
public class Navigation
{
public static string CreateNavigation(Page myPage) {</P>
<P> SiteMapProvider oSiteMapProvider = SiteMap.Providers["NavigationProvider"];
SiteMapNode oSiteMapNode = oSiteMapProvider.RootNode;</P>
<P> String sNavigation = AddChild(oSiteMapProvider, oSiteMapNode, "");</P>
<P> return sNavigation;
}</P>
<P> public static string AddChild(SiteMapProvider oSiteMapProvider, SiteMapNode oSiteMapNode, String sNavigation)
{
sNavigation = sNavigation + "<ul>";</P>
<P> foreach (SiteMapNode oNode in oSiteMapNode.ChildNodes)
{
sNavigation = sNavigation + "<li>";</P>
<P> if ((oNode.Title.Length > 0) && (oNode.Url.Length > 0))
{
sNavigation = sNavigation + "<a href='" + oNode.Url.ToString() + "'>" + oNode.Title.ToString() + "</a>";
}</P>
<P> sNavigation = sNavigation + "</li>";
if (oNode == oSiteMapProvider.CurrentNode && oNode.HasChildNodes)
{
sNavigation = sNavigation + AddChild(oSiteMapProvider, oNode, "");
}
}
sNavigation = sNavigation + "</ul>";</P>
<P> return sNavigation.ToString();
}
}
Liebe Grüße Dani