först tänkte jag använda javascript men då måste jag använda frames och det vill jag inte.
Funderar på att skicka med en querystring när man klickar på ett av alternativen och sen kolla om querystringen är samma som id:t på bilden. Men jag vet inte riktigt hur en sån funktion skulle se ut
fungerar verkligen det? Tappar inte javascriptet vilken bild som ska vara vald när man går till en ny sida?
Hm, jo det har du ju rätt i... om du ändå ska byta sida så kan du ju lika gärna lösa det serverside förstås, dock tycker jag inte du ska lösa det med querystrings. Här är ett litet tips som vi använder på en liknande meny med en hoovereffekt:
Sedan har vi logiken för vilken knapp som ska vara markerad i koden:
// Klistrar in menyn i aspx-sidan coh sätter higlightpic=1
<uc1:menu id="Menu1" runat="server" [b]HighLightPic="1"[/b]>
</uc1:menu>
//sen i koden kör vi en ifsats för varje menyalternativ där vi sätter en ljusare bild på den knapp som representerar den sida vi befinner oss på för tillfället
if(highLightPic == 1){
ImageButton1.ImageUrl = "Pics/logo_button1_light.gif";
ImageButton1.Enabled = false;
}
Allt detta ligger alltså i en usercontrol så hela menyn och dess logik endast finns på ett ställe.
Ja, på varje sida där du har din usercontrol-meny skriver du highlightpic=1,2,3,4 beroende på vilken knapp du vill ska vara markerad (naturligtvis kan du döpa dina knappar till något bättre än 1,2,3...). Sedan har du ett antal ifsatser eller en casesats eller någon annan lämplig kodsnutt som kollar vilken knapp som för tillfället ska ha en annan bild än defaultbilden!
Alltså, är du på informationssidan så kan du exempelvis skriva så här:
<uc1:menu id="Menu1" runat="server" HighLight="info">
</uc1:menu>
och sen i koden...
if(highLight == "info"){
ImageButton1.ImageUrl = "info_light.gif";
}
Private _highlightedpic As String = ""
Public Property highlightedpic() As String
Get
_highlightedpic = _highlightedpic
End Get
Set(ByVal Value As String)
_highlightedpic = Value
End Set
End Property
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim highlightedpic As String
Dim imagebutton1 As ImageButton
Dim imagebutton2 As ImageButton
Dim imagebutton3 As ImageButton
If highlightedpic = "start" Then
imagebutton1.ImageUrl = "grafik/kundermeny_01.gif"
imagebutton1.Enabled = False
ElseIf highlightedpic = "info" Then
imagebutton2.ImageUrl = "grafik/kundermeny_02.gif"
imagebutton1.Enabled = False
ElseIf highlightedpic = "reg" Then
imagebutton2.ImageUrl = "grafik/kundermeny_03.gif"
imagebutton1.Enabled = False
End If
End Sub
Public MustInherit Class lmeny1
Inherits System.Web.UI.UserControl
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
Public imagebutton1 As ImageButton
Public imagebutton2 As ImageButton
Public imagebutton3 As ImageButton
Private _highlightedpic As String = ""
Public Property highlightedpic() As String
Get
_highlightedpic = _highlightedpic
End Get
Set(ByVal Value As String)
_highlightedpic = Value
End Set
End Property
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If _highlightedpic = "start" Then
imagebutton1.ImageUrl = "grafik/kundermeny_01.gif"
imagebutton1.Enabled = False
ElseIf _highlightedpic = "info" Then
imagebutton2.ImageUrl = "grafik/kundermeny_02.gif"
imagebutton2.Enabled = False
ElseIf _highlightedpic = "reg" Then
imagebutton3.ImageUrl = "grafik/kundermeny_03.gif"
imagebutton3.Enabled = False
End If
End Sub
End Class
Eftersom det är en imagebutton så får du göra länkningen i koden, navigateurl är det bara hyperlinks som har och det kan du inte använda i det här fallet.