webForumDet fria alternativet

Dubbla menyer med Sitemap och Menu control

.NET

1 svar · 439 visningar · startad av Emil RT

Medlem sedan feb. 2004200 inlägg
Frågan#1

Är total nybörjare på .NET och håller på med en sida som ska ha en huvudmeny samt en undermeny. Menyn finns i en Sitemap.

<siteMapNode url="~/" title="Root"  description="">
  <siteMapNode url="~/Huvudsida1.aspx" title="Huvudsida1"  description="">
    <siteMapNode url="~/subsida11.aspx" title="Subsida1.1"  description="" />
    <siteMapNode url="~/Subsida12.aspx" title="Subsida1.2"  description="" />
   </siteMapNode>
  <siteMapNode url="~/Huvudsida2.aspx" title="Huvudsida2"  description="">
    <siteMapNode url="~/subsida21.aspx" title="Subsida2.1"  description="" />
    <siteMapNode url="~/Subsida22.aspx" title="Subsida2.2"  description="" />
   </siteMapNode>
</siteMap>

Tanken är att båda menyerna är horisontella och finns i en master page.

<asp:Menu ID="HeadMenu1" runat="server"
    Orientation="Horizontal"
    DataSourceID="SiteMapDataSource1" 
    Staticdisplaylevels="1"
    MaximumDynamicDisplayLevels="0" >
    <StaticHoverStyle Font-Underline="True" />               
    <StaticSelectedStyle Font-Underline="True" />
</asp:Menu>
<asp:SiteMapDataSource ShowStartingNode="false" ID="SiteMapDataSource1" runat="server" />
    
<asp:Menu ID="subMenu" runat="server" 
  Orientation="Horizontal"
  DataSourceID="SiteMapHem">
  <StaticHoverStyle Font-Underline="True" />               
  <StaticSelectedStyle Font-Underline="True" />
</asp:Menu>
<asp:SiteMapDataSource ShowStartingNode="false" StartingNodeOffset = "1" ID="SiteMapDataSource2" runat="server" />

När man klickar på ett huvudmenyval markeras det med en underline och submenyn visas. Så långt funkar det. När man sedan klickar på ett submenyval ska det valet markeras. Funkar också. Men - markeringen på huvudmenyvalet försvinner.

Finns det en lösning på detta månne?

Medlem sedan feb. 2004200 inlägg
#2

Efter lite mer letande, trixande och donande verkar det ha löst sig:

    
Protected Sub MarkTopMenu(ByVal sender As Object, ByVal e As MenuEventArgs) Handles HeadMenu1.MenuItemDataBound
  If Not SiteMap.CurrentNode.ParentNode Is Nothing Then
    If e.Item.Text = SiteMap.CurrentNode.ParentNode.Title Then
      e.Item.Selected = True
    End If
  End If
End Sub

"HeadMenu1" är IDt på huvudmenyn och denna function startar alltså automatiskt för varje utskrivning av menyelement (Handles HeadMenu1.MenuItemDataBound).

252 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)