/ 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
Svar: Selecte entry i drop-down automatisk~
Fra : Anders Lau Mandsholm


Dato : 29-04-01 00:10

Jeg forespurgte i en client-side gruppe omkring dette problem, men fik i
mellemtiden en god idé til, hvordan det kunne løses server-side.

Jeg har længe nydt godt af denne gruppes råd og vejledning, så nu er det
vist på tide, at jeg giver noget tilbage, som flere vil kunne nyde godt
af i lyset af de mange spørgsmål, der stilles rundt omkring på nettet
vedr. denne specifikke problemstilling.

Problemet vedrører load af en drop-down boks, som skal have en given
værdi selected. Jeg bruger selv nedenstående script til "indstilling" af
3 drop-down bokse (dag, måned og år) udfra en DB-udtrukket fødselsdato.
Jeg har valgt at gengive måned her, da den involverer et array, da value
og option ikke er ens, som det er gældende for dag og år.

Bemærk, at scriptet også tager højde for, at koden ikke udskrives i én
lang linje, men pænt ordnet, som man ville skrive den manuelt.

Problemet kan sikkert løses mere elegant end mine begrænsede evner gør
muligt. Men det VIRKER!! :)

<select name="Maaned">
<%
Dim MaanedArray(11)
Dim n
MaanedArray(0) = "Januar"
MaanedArray(1) = "Februar"
MaanedArray(2) = "Marts"
MaanedArray(3) = "April"
MaanedArray(4) = "Maj"
MaanedArray(5) = "Juni"
MaanedArray(6) = "Juli"
MaanedArray(7) = "August"
MaanedArray(8) = "September"
MaanedArray(9) = "Oktober"
MaanedArray(10) = "November"
MaanedArray(11) = "December"
            
If IsNull(objRec("Foedselsdato")) Then
Response.Write "<option value=""Måned"" selected>Måned</option>" &
vbCrLf
For n = LBound(MaanedArray) To UBound(MaanedArray)
If n = UBound(MaanedArray) Then
Response.Write "<option value=""" & n + 1 & """>" & MaanedArray(n) &
"</option>"
Else
Response.Write "<option value=""" & n + 1 & """>" & MaanedArray(n) &
"</option>" & vbCrLf
End If
Next
Else
Response.Write "<option value=""Måned"">Måned</option>" & vbCrLf
For n = LBound(MaanedArray) To UBound(MaanedArray)
If n = UBound(MaanedArray) Then
If n + 1 = DatePart("m",(objRec("Foedselsdato")),2,3) Then
Response.Write "<option value=""" & n + 1 & """ selected>" &
MaanedArray(n) & "</option>"
Else
Response.Write "<option value=""" & n + 1 & """>" & MaanedArray(n) &
"</option>"
End If
Else
If n + 1 = DatePart("m",(objRec("Foedselsdato")),2,3) Then
Response.Write "<option value=""" & n + 1 & """ selected>" &
MaanedArray(n) & "</option>" & vbCrLf
Else
Response.Write "<option value=""" & n + 1 & """>" & MaanedArray(n) &
"</option>" & vbCrLf
End If
End If
Next
End If   

Set MaanedArray(11) = Nothing
Set n = Nothing
%>
</select>

Anders Lau
--
Anders Lau Mandsholm
Aabyhoej, Denmark
www.mandsholm.dk
lau@mandsholm.ingenspamtak.dk

 
 
Lauritz Jensen (30-04-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 30-04-01 16:38

Anders Lau Mandsholm wrote:
>
> Problemet kan sikkert løses mere elegant end mine begrænsede evner gør
> muligt. Men det VIRKER!! :)

Her er et bud på hvordan jeg tror, jeg ville have lavet den.
Et par bemærkninger: Array i asp er en simpel type, så du behøver ikke
"set ... = nothing". Jeg vil foreslå, at du prøver at undgå at lave den
samme ting flere gange i din kode (I dit eksempel er der 4 steder hvor
en måned udskrives med nogle få variationer).

call WriteMonthOptions("Maaned", objRec("Foedselsdato"))

Sub WriteMonthOptions(ByVal Name, ByVal Value)
Dim i, MonthNames, s
MonthNames = Array("Januar", "Februar", "Marts", "April", _
"Maj", "Juni", "Juli", "August", "September", "Oktober", _
"November", "December")
If IsDate(Value) Then Value = Month(Value)
Value = CLng("0" & Value)
Response.Write "<select name=""" & Name & """>" & vbCrLf
Response.Write "<option value="""">M&aring;ned</option>" & vbCrLf
For i = 1 To 12
If (Value = i) Then s = " selected" Else s = ""
Response.Write "<option value=""" & i & """" & s & ">" & _
MonthNames(i - 1) & "</option>" & vbCrLf
Next
Response.Write "</select>" & vbCrLf
End Sub

--
Lauritz

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

Månedens bedste
Årets bedste
Sidste års bedste