Avatar billede christ Nybegynder
17. februar 2003 - 13:34 Der er 7 kommentarer og
3 løsninger

Dropdownbokse?

Hej

Jeg ved ikke om det her er et ASP spørgsmål?!

Jeg har 2 dropdownbokse. Boks nummer to er afhængig af hvad der bliver valgt i boks nummer 1. Hvordan laver man det?
Det er muligvis et JavaScript spørgsmål?

Eks.
http://www.postdanmark.dk/ -> portoguide (øverst til højre)

Nogle idéer?

På forhånd tak
Avatar billede hmm10 Nybegynder
17. februar 2003 - 13:54 #1
valgmuligheden nr. 1 giver besked til valgmuligheden nr. 2 ved hjælp af en variabel fra adressen.. http://www.postdanmark.dk/forside.asp?guideMode=pakker giver pakker osv..
Avatar billede christ Nybegynder
17. februar 2003 - 13:58 #2
Det du siger er i forbindelse med radiobuttons.
Jeg mener de to dropdownbokse, hvor boks 2 ændrer values hvis man ændrer boks 1
Avatar billede eagleeye Praktikant
17. februar 2003 - 13:59 #3
Det som skifter data i dropdown boksen er javascript men typisk kommer data som skal vises fra en databasen som hendtes med serverside script.

Så se mit svar her med to drop down bokse:
http://www.eksperten.dk/spm/240907
Avatar billede hmm10 Nybegynder
17. februar 2003 - 14:00 #4
Kan laves på samme måde..
Avatar billede christ Nybegynder
17. februar 2003 - 14:21 #5
<tr>
  <td>Type:</td>
  <td><select name="type" onchange="?">
          <option value="type1">1</option>
          <option value="type2">2</option>
          <option value="type3">3</option>
      </select>
  </td>
</tr>
<tr>
    <td>Ansvarlig:</td>
    <td><select name="ansvarlig">
          <option value="DBværdi">DBværdi</option>
    </select>
  </td>
</tr>

Problemet er:
Hvordan får "ansvarlig" værdier alt efter hvad der er valgt i "type"?
"Type" er ren HTML
"Ansvarlig" er DB opslag

Hvad skal der stå i onchange?

Håber det hjælper
Avatar billede ellebaek Nybegynder
17. februar 2003 - 14:38 #6
Du kan lave det med:

Response.redirect(dinside.asp?type=1)
Så kan du med request.querystring(type) finde den værdi, og derved finde ud af hvad der skal stå i dropdown2...!

Jeg ved ikke om det kan lave med onchange...
Avatar billede ellebaek Nybegynder
17. februar 2003 - 15:08 #7
<select name="type_id" class=input onchange="reload_portoguide();">

function reload_portoguide ()
{
    document.portoguideform.action = "forside.asp"
    document.portoguideform.submit();
}

Jeg kiggede lige lidt på postdanmarks script...!
som du kan se benytter de et javascript i deres onchange. i javascriptet er portoguideform navnet på den form de benytter. Formen er en post form med action til en asp side
<form name=portoguideform action="/portoguide/brev2.asp" method=get onSubmit=changeMenuBg()>
Så mit umiddelbare gæt er at det er denne side der finder ud af hvad der skal stå i den anden dropdown boks...
Avatar billede christ Nybegynder
17. februar 2003 - 15:56 #8
Pyha!!!
Jeg bliver lige nødt til at kigge på det til i morgen, det virker rimelig vildt det man skal lave...

Foreløbig tak for svarene, jeg vender tilbage med point i morgen!

Christ
Avatar billede mortrr Praktikant
17. februar 2003 - 17:33 #9
Det kan altså også lade sig gøre uden at hente hele siden igen.

Hvis du har to dropdown, hvor nr to er afhængig af nummer et, kan du ved onchange på nr 1 udskifte en script src, som henter det der skal proppes i nr 2.

Eksempel:
<script>
var Personer=false;
var HentPersoner=false;
function HentData(inpControl) {
  if (!Personer) {
    Personer=inpControl.form.selPersoner;
    HentPersoner=document.getElementByID("scrHentPersoner");
  }
  if (Personer && HentPersoner) {
    HentPersoner.src="hentpersonerJS.asp?Gruppe="+inpControl.options[inpControl.selectedIndex].value;
  }
}
</SCRIPT>
<SCRIPT src="hentpersonerjs.asp" id="scrHentPersoner"></script>
<select name="selGruppe" onchange="HentPersoner(this)">
<option value="1">Gruppe 1
<option value="2">Gruppe 2
</select>
<select name="selPersoner">
<option value="0">Vælg en gruppe
</select>

Og hentpersonerjs.asp:
<%
reqGruppe=Request("Gruppe")
if reqGruppe>"" and IsNumeric(reqGruppe) then
  %>if (Personer) {<%
  Set con=Server.CreateObject("ADODB.Connection")
  con.Open ........
  sql="SELECT PersonID, PersonNavn FROM Personer WHERE GruppeID=" & reqGruppe
  Set rs=con.Execute(sql)
  %>Personer.options.length=0;
  <%
  if not rs.EOF then
    do while not rs.EOF
      %>
      newOption=document.createElement('OPTION');
      Personer.options.add(newOption);
      newOption.innerText="<%=rs("PersonNavn")%>";
      newOption.value="<%=rs("PersonID")%>";
      <%
      rs.MoveNext
    loop
  end if
  %>}<%
end if
%>

Med forbehold for fejl i ovenstående, virker det glimrende i nyere browsere.
Hvis det er en gammel browser (hvor document.getElementByID ikke findes), poster man istedet til en ny side der viser personer for den valgte gruppe.
Avatar billede christ Nybegynder
18. februar 2003 - 13:11 #10
Hej Igen!

Så fandt jeg en løsning, lidt nemmere mener jeg!

<%
  dim i, sql, rs, typ
  typ = request.querystring("typen")
  set rs = server.createobject("ADODB.recordset")
  if typ = "type1" then
  sql = "SELECT * FROM tabel WHERE (variabel = 'værdi1')"     
  end if
  if typ = "type2" then
  sql = "SELECT * FROM tabel WHERE (variabel = 'værdi2')"
  end if
  if typ = "type3" then
  sql = "SELECT * FROM tabel WHERE (variabel = 'værdi3')"
  end if
  rs.open sql, Conn
%>

<form name="typ" method="get" action="denneside.asp">
  <select name="typen" onchange="form.submit()">
      <option value="type1">type1</option>
      <option value="type2">type2</option>
      <option value="type3">type3</option>
  </select>
</form>
<form>
<select name="navn">
  <% do until rs.eof %>
      <option value="<%=rs.fields("feltnavn")%>"><%=rs.fields("feltnavn")%></option>
  <%
      rs.movenext
      loop
      rs.close
      set rs = nothing
  %>
</form>

Det virker i hvertfald!

Hvis der skal yderligere forklaring til så skriv endelig

Christ
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester