webForumDet fria alternativet

Menykontroll

5 svar · 275 visningar · startad av erka

erkaMedlem sedan dec. 19996 522 inlägg
#1

God morgon
Håller på och bygger en meny med en rad med flikar. Dessa flikar består av gif bilder och länkar till olika sidor. Varje flik finns i två olika versioner, en som är aktiv och en som är inaktiv. Är jag tex på sidan Inställningar ska fliken (bilden) för inställningar vara Mnu_InstallningarActive.gif är man på någon annan flik ska inställningsfliken (samt de andra som man inte är på) vara Mnu_InstallningarInActive.gif osv.

Jag tänkte att man skulle kunna bygga en egen kontroll för denna meny, vilket jag aldrig har gjort. Jag undrar vilka sätt det finns att lösa detta på, hur ska jag / kontrollen veta vilken flik man är på, hur ska man smidigast skicka med det ? Ska man analysera pathen till sidan man är på eller finns det något annat smidigt sätt.

NETworkMedlem sedan juni 20011 732 inlägg
#2

När vi gjorde en sådan meny löste vi det med querystrings... men det kanske finns något smidigare sätt?

erkaMedlem sedan dec. 19996 522 inlägg
#3

Gjorde ni så att i sidans page_load anropade kontrollen med querystringen som parameter ?

NETworkMedlem sedan juni 20011 732 inlägg
#4

Hm, nu var det en kollega som gjorde menyn och om jag inte minns fel så var det nog ett javascript som fixade detta. Vi använde inte bilder utan divar och vi läste in hela menyn på en gång (för att slippa postbacks, det är en javascriptmeny som genereras av en egensnickrad .net-kontroll). Våra förutsättningar var alltså antagligen lite annorlunda än dina.

Men försök att undvika att kontrollen kräver en massa kod på de sidor där den implementeras. Poängen med en kontroll är att göra den så självförsörjande som möjligt, dvs att du som användare av kontrollen i princip bara behöver dra in den på sidan och kasta in data på den så sköter den sig själv sedan...

Ett bättre alternativ kanske är att låta kontrollen skriva till viewstaten, där ifrån kan den sedan hålla reda på vilken som är markerad.

erkaMedlem sedan dec. 19996 522 inlägg
#5

Network, tack. Skulle du kunna förklara viewstate varianten lite närmare, jag förstår inte riktigt.

:)

NETworkMedlem sedan juni 20011 732 inlägg
#6

Jag vet inte om du har tittat i koden på en aspx-sida (alltså den kod som är exekverat när du gått in på sidan). Om du gör detta ser du att det alltid finns en <input type="hidden"> som innehåller en massa gojja. Detta är ett slags minne som används av asp.net för att exempelvis hålla kvar alla inställningar i sina kontroller över postbacks utan att du behöver tänka på det.

Till detta minne kan du även skriva manuellt, ungefär som du skriver en session fast med den skillnaden att minnet ligger sparat på sidan hos klienten istället för på servern. Fördelen med detta är, förutom att du slipper slösa på systemresurser, att det du skriver alltid kommer att finnas kvar så länge sidan hos klienten är kvar (och finns inte sidan kvar har du ju ingen nytta av dessa data).

ViewState["selectedMenu"] = "här sätter du ett värde";

Du måste alltså på något sätt identifiera dina menyflikar med ett id eller vad som helst. Sedan får du helt enkelt kolla vilken meny som blivit klickad på och där spara undan dess id, när du sedan styr ut menyn till klineten jämför du den med din sparade variabel i viewstaten och sätter den som selected!

133 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)