Toon posts:

[ASP] Select list default waarde

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een hele eenvoudige select list op mijn asp formulier

code:
1
2
3
4
5
6
<select name="test">
<option name="" id="0" value="<%= objRec1.Fields("Name").Value %>"><%= objRec1.Fields("Name").Value %></option>
<option name="Piet" id="1" value="Piet">Piet </option>
<option name="Jan" id="2" value="Jan">Jan </option>
<option name="Klaas" id="3" value="Klaas">Klaas </option>
</select>


In het veld Name staat uiteraard Piet, Jan of Klaas. Als ik dat dus toon in de select list, wil ik niet nog een keer diezelfde naam zien in mijn lijst.

Hoe vang ik dat af, ben als een tijd aan het zoeken op het net en hier maar zonder succes. Om elke optie een if - then te bouwen is ook niet echt elegant.........

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je kunt beter de list opbouwen met een for-next / do..loop of whatever. En zo te zien gebruik je een ADO recordset. Dan kun je nog beter zoiets doen:

Visual Basic:
1
2
3
4
Dim mySelection
mySelection = 3  'Request.form ofzo, je zorgt uiteraard dat hier de gewenste selectie gezet wordt.

Response.Write GetNameDropDown(mySelection) 

En dan in een include ofzo:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
'This function returns a string with the HTML for a populated dropdown (select) with name sName and the correct option selected (pass -1 for ID for no default selection)
Private Function GetNameDropDown(sName, lSelectedID)
  Dim sOut

  sOut = "<select name=""" & Server.HTMLEncode(sName) & """>" & vbCrLf
  '...
  'Haal hier je je recordset op...
  '...
  While not objRecl.eof
    sOut = sOut & "  <option value=""" & objRecl.Fields("id").value & """" & IIF(objRecl.fields("id").value=lSelectedID," selected","") & ">" & objRecl.fields("name").value & "</option>" & vbCrLf
    objRecl.movenext
  Wend
  sOut = sOut & "</select>" & vbCrLf
  GetNameDropDown = sOut
End Function

'IIF Functie implementation
Private Function IIF(bCondition, vTrue, vFalse)
  If bCondition then IIF = vTrue else IIF = vFalse
End Function

[ Voor 201% gewijzigd door RobIII op 03-03-2006 11:44 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Er is dus niet echt een makkelijke oplossing? Ik probeerde een "select" maar dat was het ook niet.

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Verwijderd schreef op vrijdag 03 maart 2006 @ 11:31:
Ik heb een hele eenvoudige select list op mijn asp formulier

code:
1
2
3
4
5
6
<select name="test">
<option name="" id="0" value="<%= objRec1.Fields("Name").Value %>"><%= objRec1.Fields("Name").Value %></option>
<option name="Piet" id="1" value="Piet">Piet </option>
<option name="Jan" id="2" value="Jan">Jan </option>
<option name="Klaas" id="3" value="Klaas">Klaas </option>
</select>


In het veld Name staat uiteraard Piet, Jan of Klaas. Als ik dat dus toon in de select list, wil ik niet nog een keer diezelfde naam zien in mijn lijst.

Hoe vang ik dat af, ben als een tijd aan het zoeken op het net en hier maar zonder succes. Om elke optie een if - then te bouwen is ook niet echt elegant.........
<option selected> zou moeten werken, maar dan zul je toch echt voor iedere optie een IF constructie moeten gaan maken.
Normaalgesproken worden dit soort lijsten ook in de database opgeslagen, met het oog op toekomstige toevoegingen. Jij maakt het jezelf lastig door te gaan hardcoden.

  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

Is het geen idee om die Piet, Jan en Klaas in objRec1.Fields te zetten en gewoon in een lus de boel in je select te zetten?

Als je zulke dingen uit een database haalt is het gemakkelijker, dan leg je gewoon een unique constraint/unique index op die tabel.

Fat Pizza's pizza, they are big and they are cheezy


Verwijderd

Topicstarter
Ga ik doen! Bedankt!!

Verwijderd

Topicstarter
Bovenstaande werkt perfect maar nu loop ik in het vervolg tegen een probleem aan:
Ik doe op de volgende pagina een

request.form("Naam") maar die is dan leeg terwijl hij op de initiele pagina wel gevuld is.

Hoe kan ik dit afvangen, ben er al een heel weekend mee aan de slag geweest maar zonder resultaat.

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
hidden veldje opnemen voor naam met de waarde erin:

<input type="hidden" name="Naam" value="<%=Request.Form("Naam")%>">

Dit is overigens redelijk basic ASP, misschien de tutorial op http://www.w3schools.com voor asp eens volgen?
Pagina: 1