/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Select i dropdownmenu
Fra : Ole


Dato : 05-05-06 19:48

Hejsa

Jeg har lavet en dropdown menu der virker ved at den henter data fra en sql
database.
Den står øverst på alle mine sider.

Jeg har i tabellen et felt der hedder "navn" og et der hedder mode"

Koden ser således ud

<SELECT NAME=<% = rs("navn")%> onChange='location.href =
this.options[this.selectedIndex].value'>
<option selected>Vælg en katagori :</option>
<%Do While Not RS.EOF%>
<OPTION value=side.asp?mode=<% = rs("mode")%> ><% = rs("navn")%></OPTION>
<%
RS.MoveNext
Loop
%>
</SELECT>


Lige nu selecter den "vælg en katagori", men jeg gerne have den selecter den
værdi som "mode" når den kommer tilbage til siden og
henter data fra tabellen igen.

Er der nogen der har nogen ideer?

Ole



 
 
Jens Gyldenkærne Cla~ (05-05-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 05-05-06 22:48

Ole skrev:

> Lige nu selecter den "vælg en katagori", men jeg gerne have
> den selecter den værdi som "mode" når den kommer tilbage til
> siden og henter data fra tabellen igen.

Du skal bare sammenligne din valgte mode med posterne og sætte
selected når der er et match. Det kan fx lægges i en funktion:

mode = Request.Querystring("mode")

Function printOption(val, navn)
   Dim selected
   If val = mode Then
       selected = " selected"
   Else
       selected = ""
   End If
   printOption = "<option value=""side.asp?mode=" & _
       val & """" & _
       selected & ">" & navn & "</option>"
End Function


....

<select ...>
<%= printOption("", "Vælg en kategori") %>
<% Do While Not rs.EOF
    printOption(rs("mode"), rs("navn"))
rs.movenext
Loop    
%>
</select>
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jørn Andersen (06-05-2006)
Kommentar
Fra : Jørn Andersen


Dato : 06-05-06 03:59

On Fri, 05 May 2006 23:47:37 +0200, Jens Gyldenkærne Clausen
<jens@gyros.invalid> wrote:

>Ole skrev:
>
>> Lige nu selecter den "vælg en katagori", men jeg gerne have
>> den selecter den værdi som "mode" når den kommer tilbage til
>> siden og henter data fra tabellen igen.
>
>Du skal bare sammenligne din valgte mode med posterne og sætte
>selected når der er et match. Det kan fx lægges i en funktion:
>
>mode = Request.Querystring("mode")
>
>Function printOption(val, navn)
>    Dim selected
>    If val = mode Then
>        selected = " selected"
>    Else
>        selected = ""
>    End If
>    printOption = "<option value=""side.asp?mode=" & _
>        val & """" & _
>        selected & ">" & navn & "</option>"
>End Function
>
>
>...
>
><select ...>
><%= printOption("", "Vælg en kategori") %>
><% Do While Not rs.EOF
>     printOption(rs("mode"), rs("navn"))
> rs.movenext
> Loop    
>%>
></select>

Hvis man vil "generalisere" funktionen lidt mere, kan man typecaste
selected-værdien, da værdien fra databasen ofte kan være et tal:

' ---- Udskriv options i foldeud-boxe ---
Function fktGetOption(value, OptionText, Selected)
   fktGetOption = "<option value=""side.asp?mode=" & value & """"
   If CStr(Selected) = CStr(value) Then
      fktGetOption = fktGetOption & " selected=""selected"""
   End If
   fktGetOption = fktGetOption & ">" & OptionText & "</option>" &
vbcrlf
End Function


Good luck!

--
Jørn Andersen,
Brønshøj

Ole (06-05-2006)
Kommentar
Fra : Ole


Dato : 06-05-06 09:04

Hej igen

Det virker ikke.. :(
Jeg får en fejlmeddelse når jeg kører siden:

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0414)
Der kan ikke bruges parenteser ved kald af en Sub
/erhverv.asp, line 38, column 35
printOption(rs("mode"), rs("navn"))


Jeg har skrevet følgende
mmode = Request.Querystring("mode")

%>

Function printOption(val, navn)
Dim selected
If val = mmode Then
selected = " selected"
Else
selected = ""
End If
printOption = "<option value=""erhverv.asp?mode=" & _
val & """" & _
selected & ">" & navn & "</option>"
End Function


<SELECT NAME=<% = rs("navn")%> onChange='location.href =
this.options[this.selectedIndex].value'>
<%= printOption("", "Vælg en kategori") %>
<% Do While Not rs.EOF
printOption(rs("mode"), rs("navn"))
rs.movenext
Loop
%>
</select>

Ole




"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns97BAF20AF2761jcdmfdk@gyrosmod.cybercity.dk...
> Ole skrev:
>
>> Lige nu selecter den "vælg en katagori", men jeg gerne have
>> den selecter den værdi som "mode" når den kommer tilbage til
>> siden og henter data fra tabellen igen.
>
> Du skal bare sammenligne din valgte mode med posterne og sætte
> selected når der er et match. Det kan fx lægges i en funktion:
>
> mode = Request.Querystring("mode")
>
> Function printOption(val, navn)
> Dim selected
> If val = mode Then
> selected = " selected"
> Else
> selected = ""
> End If
> printOption = "<option value=""side.asp?mode=" & _
> val & """" & _
> selected & ">" & navn & "</option>"
> End Function
>
>
> ...
>
> <select ...>
> <%= printOption("", "Vælg en kategori") %>
> <% Do While Not rs.EOF
> printOption(rs("mode"), rs("navn"))
> rs.movenext
> Loop
> %>
> </select>
> --
> Jens Gyldenkærne Clausen
> Svar venligst under det du citerer, og citer kun det der er
> nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
> hvordan på http://usenet.dk/netikette/citatteknik.html



Jens Gyldenkærne Cla~ (06-05-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 06-05-06 10:26

Ole skrev:

> Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0414)
> Der kan ikke bruges parenteser ved kald af en Sub
> /erhverv.asp, line 38, column 35
> printOption(rs("mode"), rs("navn"))

Ah - printOption er en funktion, derfor skal der lige sættes
response.write foran:

Response.write printOption(...)

- så burde det virke.

NB: Læs gerne min signatur.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor
og hvordan på http://usenet.dk/netikette/citatteknik.html

Ole (07-05-2006)
Kommentar
Fra : Ole


Dato : 07-05-06 10:19

Hej igen

Det har jeg nu prøvet og den skriver godt nok noget nu, men det er ikke det
rigtige.
Istedet for dropdownboksen skriver den dette

Function printOption(link, hvem) Dim selected If link = mmode Then selected
= "selected" Else selected = " " End If printOption = " & hvem & "" End
Function printOption(' ', 'Vælg en kategori')printOption(rs('link'),
rs('navn'))printOption(rs('link'), rs('navn'))printOption(rs('link'),
rs('navn'))printOption(rs('link'), rs('navn'))printOption(rs('link'),
rs('navn'))


Jeg har skrevt som følger

mmode = Request.Querystring("mode")

SQL = "SELECT * FROM drop_erhverv Order BY navn"
Set rs = Conn.Execute(SQL)


%>

Function printOption(link, hvem)
Dim selected
If link = mmode Then
selected = "selected"
Else
selected = ""
End If
printOption = "<option value="erhverv.asp?mode=" & link & "" " &
selected & "> & hvem & "</option>"
End Function


<SELECT NAME=<% = rs("navn")%> onChange='location.href =
this.options[this.selectedIndex].value'>
<% Response.write "printOption(' ', 'Vælg en kategori')"

Do While Not rs.EOF
Response.write "printOption(rs('link'), rs('navn'))"
rs.movenext
Loop
%>
</select>



Jens Gyldenkærne Cla~ (07-05-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-05-06 19:28

Ole skrev:

> Det har jeg nu prøvet og den skriver godt nok noget nu, men
> det er ikke det rigtige.

[snip]


> Response.write "printOption(rs('link'), rs('navn'))"

Der er rod i anførselstegnene herover.

Der skal ikke anførselstegn uden om funktionskaldet, til gengæld
skal der bruges normale anførselstegn i henvisningerne til dit
postsæt:

   Response.write printOption(rs("link"), rs("navn"))

NB: Det er fint at du ikke længere bundciterer, men du må meget
gerne citere lidt i toppen - så er det lettere at se hvad det er
du svarer på. Se evt. siden her
<http://usenet.dk/netikette/citatteknik.html>


--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov
til at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i
Information

Ole (08-05-2006)
Kommentar
Fra : Ole


Dato : 08-05-06 15:24

>> Response.write "printOption(rs('link'), rs('navn'))"
>
> Der er rod i anførselstegnene herover.
>
> Der skal ikke anførselstegn uden om funktionskaldet, til gengæld
> skal der bruges normale anførselstegn i henvisningerne til dit
> postsæt:
>
> Response.write printOption(rs("link"), rs("navn"))

Takker. Det er dejligt med noget der er lidt mere erfaren end os
nybegyndere.

Du skriver i et tidligere indlæge at printOption er en funktion.
Det skal så vidt jeg vides kaldes i HTML. Det virker i hverfald ikke med det
ovenstående.
Jeg får stadig en fejlmeddelse som siger

Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A000D)
Typer stemmer ikke overens: 'printOption'
/erhverv.asp, line 41



Med venlig hilsen
Ole




Jens Gyldenkærne Cla~ (08-05-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 08-05-06 16:00

Ole skrev:

> Du skriver i et tidligere indlæge at printOption er en
> funktion.

Ja.

> Det skal så vidt jeg vides kaldes i HTML.


Nej. Asp-funktioner skal kaldes fra asp-kode.


> Det virker i hverfald ikke med det ovenstående.

Så er der noget galt, enten i funktionen eller i kaldet til den.


> Fejltype:
> Der opstod en Microsoft VBScript-kørselsfejl (0x800A000D)
> Typer stemmer ikke overens: 'printOption'
> /erhverv.asp, line 41

Prøv at vise din funktion igen, samt hvordan du kalder den.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Ole (08-05-2006)
Kommentar
Fra : Ole


Dato : 08-05-06 20:29

>
> Prøv at vise din funktion igen, samt hvordan du kalder den.

<%
mmode = Request.Querystring("mode")

SQL = "SELECT * FROM drop_erhverv Order BY navn"
Set rs = Conn.Execute(SQL)


%>

Function printOption(link, hvem)
Dim selected
If link = mmode Then
selected = "selected"
Else
selected = ""
End If
printOption = "<option value="erhverv.asp?mode=" & link & "" " &
selected & "> & hvem & "</option>"
End Function


<SELECT NAME=<% = rs("navn")%> onChange='location.href =
this.options[this.selectedIndex].value'>
<% Response.write "printOption(' ', 'Vælg en kategori')"

Do While Not rs.EOF
Response.write printOption(rs("link"), rs("navn"))
rs.movenext
Loop
%>
</select>


Giver følgende fejl.
Linie 41 er - Response.write printOption(rs("link"), rs("navn"))

Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A000D)
Typer stemmer ikke overens: 'printOption'
/erhverv.asp, line 41



Jens Gyldenkærne Cla~ (08-05-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 08-05-06 22:03

Ole skrev:

> %>
>
> Function printOption(link, hvem)

Fejl 1 - du har defineret asp-funktionen uden for asp-klammerne.
Den skal ind og stå mellem <% og %>.


> <% Response.write "printOption(' ', 'Vælg en kategori')"

Fejl 2: Du har stadig (eller igen) fået placeret anførselstegn
forkert. "-tegnet markerer start eller slut på en tekststreng i
asp - så Response.write "printoption...." skriver simpelthen
"printoption..." ud på skærmen. Det er ikke meningen.


> Fejltype:
> Der opstod en Microsoft VBScript-kørselsfejl (0x800A000D)
> Typer stemmer ikke overens: 'printOption'
> /erhverv.asp, line 41

Bruger du option explicit?

<http://asp-faq.dk/article/?id=9>

--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov
til at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information

Ole (09-05-2006)
Kommentar
Fra : Ole


Dato : 09-05-06 15:43

Hej Jens

Tak for din tålmodighed, du er en guttermand.
Det virker efter lidt tilretning.

Takker.

Ole



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste