webForumDet fria alternativet
Logga in / Bli medlem

Selected

ASP

13 svar · 309 visningar · startad av Mz

Medlem sedan aug. 2001139 inlägg
Trådstart#1

Hej.
Jag har lite strul med en sak, skulle behöva lite hjälp. :)

Jag skriver ut en dropDown från en Access2000 databas, databasen ser ut så här:
stateID | Räknare
State | PM
refID | Text

Sidan som länkar till sidan med dropdownen har länkar med olika län, varje län har ett unikt ID och ett klick på länken tar besökaren till sidan med dropDownen, när man entrar sidan visas två st dropmenyer, 1st med länen, 1st med kommunerna.

Nu vill jag att om man klickat på länken med ID2 så skall alternativ 2 i dropmenyn vara SELECTED så man kan se vilket län man klickade på. Klickar man sedan på drop-menyn med kommuner så skall den kommun man klickat på också bli till SELECTED, hur lyckas jag med detta?

Jag vill alltså att när Quersytringens värde stämmer överens med ett värde i databasen blir dess <option> SELECTED.

Hänger ni med? ;)

Min kod som skriver ut dropmenyn med länen ser ut som följer:

<%
Response.Write "<form action=""*"">"
	Response.Write "<table border=""0"" cellspacing=""0"" cellpadding=""0"" align=""left""><tr><td>"
	Response.Write "<select name=""till"" size=""1"" onChange=""en(this.form, this.name);"" style=""width: 110px;"">"
	Response.Write "<option>Kommun:"
	Response.Write "<option>"

		Set Connect = Server.CreateObject("ADODB.Connection")
		Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = "& Server.MapPath("..\db\states.mdb")
		SQL = "SELECT * FROM data_states WHERE refID = '"& Request.Querystring("ID") &"'"
		Set RecSet = Connect.Execute(SQL)

			Do Until RecSet.EOF
		
				rsID = RecSet("stateID")
				refID = RecSet("refID")
				rsState = RecSet("State")

				Response.Write "<option value=action.asp?action=show_state&ID="& refID &"&stID="& rsID &">"& rsState
			

			RecSet.MoveNext
			Loop
	

		RecSet.Close
		Set RecSet = Nothing
		Connect.Close
		Set Connect = Nothing

	Response.Write "<option>"
	Response.Write "</select>"
	Response.Write "</td></tr></table>"
	Response.Write "</form>"
%>

Tacksam för svar!

Medlem sedan aug. 20012 349 inlägg
#2
Function IIF(ByVal expr, ByVal v1, ByVal v2)
	If expr Then
		IIF = v1
	Else
		IIF = v2
	End If
End Function

Sen kan man i option taggen slänga in
<option value="<%=rs("id")%>"<%=IIF(rs("id")=Request.querystring("id")," SELECTED ","")%>>Text som syns i dropdownen</option>

Du får byta ut rs("id") och request.querystring("id") mot det som det skulle vara.

[r] rättade min kod lite :)

Medlem sedan aug. 2001139 inlägg
#3

Tack, jag provalerar. ;)

Medlem sedan aug. 2001139 inlägg
#4

Jag får det inte att fungera så bra...

Jag använder samma funktion som du skrev, sedan denna kod:

<option value="action.asp?action=show_state&areaID=<%=refID%>&stateID=<%=rsID%>" <%=IIF((rsID) = Request.Querystring("stateID")," SELECTED ","")%>><%=rsState%>

Inga felmeddelande, dock blir inga <options> SELECTED.

Medlem sedan feb. 20012 412 inlägg
#5

asch, läste totalt fel :(

Jörgen

[Redigerat av jorgen den 23 aug 2001]

Medlem sedan aug. 2001139 inlägg
#6

Jag har även försökt detta:

<option value="action.asp?action=show_state&areaID=<%=refID%>&stateID=<%=rsID%>" <% If rsID = Request.Querystring("stateID") Then Response.Write " SELECTED"%>><%=rsState%>

Men det fungerar inte heller.. :/

Medlem sedan aug. 2001139 inlägg
#7

Skriver jag ut <%=rsID%> och <%=Request.Querystring("stateID")%> så visar dem samma värde, men <option> blir inte SELECTED.. :(

Medlem sedan juni 200032 967 inlägg
#8

if clng (rsID) = clng(Request.Querystring("stateID")) then...

problemet kan vara att variablerna är av olika subtyper, så du får först konvertera dem till samma, exempelvis long.

mvh,

Medlem sedan aug. 2001139 inlägg
#9

"The king has spoken..."

@nders - Det fungerar "kungligt" bra! ;)
Tack!

Medlem sedan aug. 2001139 inlägg
#10

hmmm.. märker att jag ibland får felmeddelandet:
Inkompatibla typer: 'clng'

Vad kan det bero på måntro?

Medlem sedan juni 200032 967 inlägg
#11

vad har du i variabeln då du får felmeddelandet?

long är alltså tal, om du ska göra strängjämförelser använder du cstr(), om du ska jämföra datum använder du cdate().

Medlem sedan aug. 2001139 inlägg
#12

Hej.

Det är siffror jag skall jämför så cstr fungerade mycket bättre, tack!

Medlem sedan juni 200032 967 inlägg
#13

cstr funkar för det mesta. grejen är du kan göra tal till strängar hur som helst, men inte strängar till tal.

cstr(123) ger dig en sträng som innehåller "123".
cdbl("123") ger dig en talet 123.
cdbl("en sträng") ger dig ett felmeddelande eftersom bokstäver inte kan göras om till tal.

mvh,

Medlem sedan aug. 2001139 inlägg
#14

Tack för den snabblektionen!
*kastar aspboken och lägger till WF i favoriterna*

;)

262 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)