webForumDet fria alternativet

Dynamiskt antal år

ASP

11 svar · 407 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

:h
Tja!

Hur får jag till en kod som listar upp ett antal årtal i en listmeny beroende på det intervall man valt och även selectar aktuellt år?

Ex jag vill att de senaste 3 åren ska vara med och 2006 ska väljas eftersom det är aktuellt år.

Då skulle den generarade koden se ut så här:

          <select name="selectYear" class="listmeny" onChange="this.form.submit();">
            <option value="2004">2004</option>
            <option value="2005">2005</option>
            <option value="2006" selected>2006</option>
          </select>

Mvh
Henrik

Medlem sedan maj 200010 687 inlägg
#2
<select name="selectYear" class="listmeny" onChange="this.form.submit();">
<%
For i = Year(Now) - 2 To Year(Now)
	%>
	<option value="<%=i%>"<%If i = Year(Now) Then Response.Write " selected"%>><%=i%></option><%
Next 'i
%>
</select>
Medlem sedan jan. 20013 582 inlägg
#3

Weeee!

Tackar! ;)

//Henrik

Medlem sedan jan. 20013 582 inlägg
#4

Det fungerar ju...

Men jag skulle vilja få till det att när man ändrar i listmenyn, och därmed submittar, så vill jag att det årtal man valt stannar kvar.

Testade med:

<option value="<%=i%>"<%If i = Year(Now) or i = request("selectYear") Then Response.Write "selected"%>><%=i%></option>

Men det fungerade inte. Det hoppade tillbaka till 2006... :(

//Henrik

Medlem sedan dec. 19996 721 inlägg
#5

Lagra målvärdet innan, och jämför med det

theYear=request("selectYear") 
if theYear="" then theYear=Year(Now)
Medlem sedan jan. 20013 582 inlägg
#6

Okej!

Hmmm..
Testade med:

theYear = request("selectYear")

if theYear= "" then theYear = Year(Now)

...

<select name="selectYear" class="listmeny" onChange="this.form.submit();">
				<%
				For i = Year(Now) - 2 To Year(Now)
					%>
					<option value="<%=i%>"<%If i = theYear Then Response.Write "selected"%>><%=i%></option><%
				Next
				%>
			</select>

Men det vill sig inte... Om jag bytter år, dvs submittar så stannar året inte kvar...

Vad har jag gjort för fel?

//Henrik

Medlem sedan jan. 20013 582 inlägg
#7

Hej!
Efter lite pillande så fick jag det att fungera typkonverterade det jag jämförde till en sträng:

<option value="<% =i %>"<% If cstr(i) = cstr(theYear) Then Response.Write "selected" %>><% =i %></option>

Jag har därför förstått att jag jämförde päron med äpplen.... Men är detta rätt sätt att gå, eller ska jag göra på något annat, bättre sätt? Det fungerar ju nu visserligen...

//Henrik

Medlem sedan dec. 19996 721 inlägg
#8

Rätt

Medlem sedan jan. 20013 582 inlägg
#9

Okidoki :D

Då kör jag på det!

//Henrik

Medlem sedan jan. 20013 582 inlägg
#10

Följande kod blev det till slut:

theYear = request("selectYear")

if theYear= "" then theYear = Year(Now)

...

		  	<select name="selectYear" class="listmeny" onChange="this.form.submit();">
				<%
				For i = Year(Now) - 2 To Year(Now)
					%>
					<option value="<% =i %>"<% If cstr(i) = cstr(theYear) Then Response.Write "selected" %>><% =i %></option><%
				Next
				%>
			</select>

Henrik

Medlem sedan maj 200010 687 inlägg
#11

När det faktiskt är siffror så är det bara onödigt och fult att göra strängjämförelser.

theYear = request("selectYear")
if theYear = "" then theYear = Year(Now)
theYear = CLng(theYear)
...
<select name="selectYear" class="listmeny" onChange="this.form.submit();">
<%
For i = Year(Now) - 2 To Year(Now)
	%>
	<option value="<% =i %>"<% If i = theYear Then Response.Write " selected" %>><% =i %></option><%
Next
%>
</select>

Eller ännu hellre:

'i din util fil
Function Coalesce(Value1, Value2)
	If Trim(Value1 & "") <> "" Then
		Coalesce = Value1
	ElseIf Trim(Value2 & "") <> "" Then
		Coalesce = Value2
	End If
End Function

'sidan där util filen är inkluderad
theYear = CLng( Coalesce(request("selectYear"), Year(Now)) )
...
<select name="selectYear" class="listmeny" onChange="this.form.submit();">
<%
For i = Year(Now) - 2 To Year(Now)
	%>
	<option value="<% =i %>"<% If i = theYear Then Response.Write " selected" %>><% =i %></option><%
Next
%>
</select>
Medlem sedan jan. 20013 582 inlägg
#12

Aha!

Okej!

Jag ska testa det också!

//Henrik

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