vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ASP.NET, WebServices u. Remoting
Re: Abbildung von Menüstrukturen 
Autor: Drapondur
Datum: 02.03.09 19:02

Hallo,

Mein Vorschlag sieht so aus:

Zunächst einmal musst Du alle Anchor-Tags duch asp:hyperlinks ersetzen, damit man sie vom Code aus ansprechen kann. Dann kannst Du die Style-Sheet-Zuweisung nicht mehr mit id="akt" machen, sondern Du musst eine CSS-Klasse definieren. (ASP.NET benennt die ID's um, wenn Sie in die Seite gerendert werden).

Dann kannst Du im Codebehind für alle Links prüfen, ob ihre NavigateUrl-Eigenschaft mit der aktuellen Seite überienstimmt. Ist dies der Fall, dann setzt die die CssClass-Eigenschaft auf den CSS-Klassennamen für einen ausgewählten Link (z.B. link.CssClass = "akt"). Bevor Du lange suchst: Vergleiche NavigateUrl mit Request.AppRelativeCurrentExecutionFilePath. Damit dieser Vergleich klappt müssen die NavigateUrls relativ, mit einer Tilde vorangestellt, angegeben sein (<asp:hyperlink navigateurl="~/default.aspx">)

Ähnlich verfährst Du mit den Untermenüpunkten. Du platzierst sie innerhalb eines Containers (z.B. in einem Panel oder in einem <ul id="ulCtrl" runat="server">). Dieses Container machst Du in Abhängigkeit von der aktuellen Seite sichtbar.

Es bietet sich an das ganze während der Datenbindung zu erledigen. Versehe Dein oberstes ul-Tag mit runat=server und rufe dann im PageLoad immer UlNavi.DataBind() auf.

Ein einzelner Link könnte dann so aussehen:
<asp:HyperLink ID="lnkHome" runat="server" 
   NavigateUrl="~/default.aspx" 
   CssClass='<%#GetCss(lnkHome) %>'>
   Home
</asp:HyperLink>
wobei GetCss() im Code-Behind als
Protected Function GetCss(ByVal lnk As HyperLink) As String
definert ist.
Ein Container für ein Untermenü könnte so aussehen:
<ul id="UlHomeSubMenu" runat="server" 
   visible='<%# GetUlSubVisible(lnkHome, UlHomeSubMenu) %>'>
     ... Untermüpunkte ....
Die Funktionen:
Protected Function GetCss(ByVal lnk As HyperLink) As String
	Dim linkUrl As String = lnk.NavigateUrl
	Dim pageUrl As String = Request.AppRelativeCurrentExecutionFilePath
	If linkUrl.Equals(pageUrl, StringComparison.OrdinalIgnoreCase) Then
		Return "selected"
	Else
		Return ""
	End If
End Function
Protected Function GetUlSubVisible(ByVal topLink As HyperLink, ByVal ul As _
  HtmlGenericControl) As Boolean
	Dim pageUrl As String = Request.AppRelativeCurrentExecutionFilePath
	Dim linkUrl As String = topLink.NavigateUrl
	If linkUrl.Equals(pageUrl, StringComparison.OrdinalIgnoreCase) Then
		Return True
	End If
 
	For Each ctrl As Control In ul.Controls
		Dim lnk As HyperLink = TryCast(ctrl, HyperLink)
		If lnk Is Nothing Then Continue For
		linkUrl = lnk.NavigateUrl
		If linkUrl.Equals(pageUrl, StringComparison.OrdinalIgnoreCase) Then
			Return True
		End If
	Next
	Return False
End Function
Und nicht vergessen: DataBind im Page-Load aufrufen.

Ciao
D.

Beitrag wurde zuletzt am 02.03.09 um 19:03:49 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Abbildung von Menüstrukturen1.235PurpleRose02.03.09 16:25
Re: Abbildung von Menüstrukturen750Drapondur02.03.09 16:46
Re: Abbildung von Menüstrukturen764PurpleRose02.03.09 17:04
Re: Abbildung von Menüstrukturen780Drapondur02.03.09 19:02
Re: Abbildung von Menüstrukturen742PurpleRose03.03.09 07:58

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel