Combo List Dinamiche

mat635418

Nuovo Utente
9 Feb 2006
2
0
0
Chiedo un aiuto per un processo basato su ASP,
che utilizzando tre pagine mi permette di scegliere
tra marca, modello e allestimento di una automobile.
Il database da cui estrae i dati è propietario, quindi
terrò nascosta la parte di dichiarazione delle stringhe
sql e dei relativi dati d'accesso (ID e PW).
Il processo funziona, ma nel caricare la pagina successiva,
non riesco a intercettare la caption scelta dall'utente e
a farla rimanere nel combo precedente..spero di essermi fatto capire.

A seguire, posto il nucleo delle prime due pagine, a titolo d'esempio.
Non avendo io costruito le functions javascript, non mi trovo
molto nel modificarle, ma ho piena fiducia di trovare
qualche dritta dalle vostre menti geniali..

----------------------------------
pagina1
----------------------------------

<html>
<head>
<title>Scegli</title>


<script language="JavaScript">
<!--

function GoUrl(tipo,valore){
if(valore != "**"){
switch(tipo){
case 1:
var url = "scegli_modello.asp?CodMarca="+valore;
break;
case 2:
var url = "scegli_allest.asp?CodMarca=<%=CodMarca%>&CodModello="+valore;
break;
case 3:
var url = "elenco.asp?CodMarca=<%=CodMarca%>&CodModello=<%=CodModello%>&CodAllestimento="+valore;
break;
case 4:
var url='marca.asp?Largh=<%=Largh%>&Serie=<%=Serie%>&Diam=<%=Diam%>&IndCar=<%=IndCar%>&CodVel=<%=CodVel%>&CodMarca=<%=CodMarca%>&CodModello=<%=CodModello%>&CodAllestimento=<%=CodAllestimento%>&Stag='+valore;
break;
case 5:
var url='disegno.asp?Largh=<%=Largh%>&Serie=<%=Serie%>&Diam=<%=Diam%>&IndCar=<%=IndCar%>&CodVel=<%=CodVel%>&CodMarca=<%=CodMarca%>&CodModello=<%=CodModello%>&CodAllestimento=<%=CodAllestimento%>&Stag='+valore;
break;
case 6:
var url='scheda_prodotto.asp?CodProd=<%=CodProd%>&CodDisegno='+valore;
break;
}
window.location.replace(url);
}
}
function SetSelect(){
var CodMarca = "<%=CodMarca%>";
if(CodMarca != ""){
for(var i = 0; i<document.forms[0].CodMarca.length; i++){
if(document.forms[0].CodMarca.value == CodMarca){
document.forms[0].CodMarca.selected = true;
break;
}
}
}
var CodModello = "<%=CodModello%>";
if(CodModello != ""){
for(var i = 0; i<document.forms[0].CodModello.length; i++){
if(document.forms[0].CodModello.value == CodModello){
document.forms[0].CodModello.selected = true;
break;
}
}
}
var CodAllestimento = "<%=CodAllestimento%>";
if(CodAllestimento != ""){
for(var i = 0; i<document.forms[0].CodAllestimento.length; i++){
if(document.forms[0].CodAllestimento.value == CodAllestimento){
document.forms[0].CodAllestimento.selected = true;
break;
}
}
}
if(document.forms[0].CodDisegno){
document.forms[0].CodDisegno[0].selected = true;
}
}

function MM_goToURL() { //v3.0
var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
for (i=0; i<(args.length-1); i+=2) eval(args+".location='"+args[i+1]+"'");
}
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script>

</head>

<form name="cerca" method="post" action="scegli_modello.asp">

<td>Scegli la marca della tua vettura:</td>
<td><select name="CodMarca" id="CodMarca" onChange="GoUrl(1,this.value)">
<option value="**" selected>Scegli la marca</option>

<%
Dim rs
Dim sql

Set rs = Server.CreateObject("ADODB.Recordset")

rs.CursorLocation=3

sql="SELECT MarcheAuto.CodMarcaAuto, MarcheAuto.Descrizione FROM ModelliAuto RIGHT OUTER JOIN Allestimenti ON"
sql=sql+" ModelliAuto.CodMarca = Allestimenti.CodMarca AND ModelliAuto.CodModello = Allestimenti.CodModello LEFT OUTER"
sql=sql+" JOIN MarcheAuto ON ModelliAuto.CodMarca = MarcheAuto.CodMarcaAuto WHERE (MarcheAuto.TipoOperazione <> 'D')"
sql=sql+" GROUP BY MarcheAuto.CodMarcaAuto, MarcheAuto.Descrizione ORDER BY MarcheAuto.Descrizione"

rs.open sql,conn,0, 1

do until rs.EOF
%>
<option value="<%=rs("CodMarcaAuto")%>"><%=rs("Descrizione")%></option>
<%

rs.movenext
loop

rs.close
%>

</select>
<%
set rs=nothing
conn.close
set conn=nothing
%>
</td>
</tr>
</form>
</table>

</body>
</html>


----------------------------------
pagina2
----------------------------------

<%
dim CodMarca
CodMarca = Request("CodMarca")
session("marca") = Request("CodMarca")
%>



<script language="JavaScript">
<!--
function GoUrl(tipo,valore){
if(valore != "**"){
switch(tipo){
case 1:
var url = "scegli_modello.asp?CodMarca="+valore;
break;
case 2:
var url = "scegli_allest.asp?CodMarca=<%=CodMarca%>&CodModello="+valore;
break;
case 3:
var url = "elenco.asp?CodMarca=<%=CodMarca%>&CodModello=<%=CodModello%>&CodAllestimento="+valore;
break;
case 4:
var url='marca.asp?Largh=<%=Largh%>&Serie=<%=Serie%>&Diam=<%=Diam%>&IndCar=<%=IndCar%>&CodVel=<%=CodVel%>&CodMarca=<%=CodMarca%>&CodModello=<%=CodModello%>&CodAllestimento=<%=CodAllestimento%>&Stag='+valore;
break;
case 5:
var url='disegno.asp?Largh=<%=Largh%>&Serie=<%=Serie%>&Diam=<%=Diam%>&IndCar=<%=IndCar%>&CodVel=<%=CodVel%>&CodMarca=<%=CodMarca%>&CodModello=<%=CodModello%>&CodAllestimento=<%=CodAllestimento%>&Stag='+valore;
break;
case 6:
var url='scheda_prodotto.asp?CodProd=<%=CodProd%>&CodDisegno='+valore;
break;
}
window.location.replace(url);
}
}
function SetSelect(){
var CodMarca = "<%=CodMarca%>";
if(CodMarca != ""){
for(var i = 0; i<document.forms[0].CodMarca.length; i++){
if(document.forms[0].CodMarca.value == CodMarca){
document.forms[0].CodMarca.selected = true;
break;
}
}
}
var CodModello = "<%=CodModello%>";
if(CodModello != ""){
for(var i = 0; i<document.forms[0].CodModello.length; i++){
if(document.forms[0].CodModello.value == CodModello){
document.forms[0].CodModello.selected = true;
break;
}
}
}
var CodAllestimento = "<%=CodAllestimento%>";
if(CodAllestimento != ""){
for(var i = 0; i<document.forms[0].CodAllestimento.length; i++){
if(document.forms[0].CodAllestimento.value == CodAllestimento){
document.forms[0].CodAllestimento.selected = true;
break;
}
}
}
if(document.forms[0].CodDisegno){
document.forms[0].CodDisegno[0].selected = true;
}
}

</script>


<form name="cerca" method="post" action="scegli_allest.asp">
<tr>
<td width="24">1</td>
<td width="189">Hai scelto la marca:</td>
<td width="145"> <select name="CodMarca" id="CodMarca" onChange="GoUrl(1,this.value)">
<option value="**">Scegli la marca</option>
<%
Dim rs
Dim sql

Set rs = Server.CreateObject("ADODB.Recordset")

rs.CursorLocation=3

sql="...stringa sql funzionante..."

rs.open sql,conn,0, 1

do until rs.EOF
%>
<option value="<%=rs("CodMarcaAuto")%>"><%=rs("Descrizione")%></option>
<%
rs.movenext
loop
rs.close
%>
</select></td>
<td width="548"><% response.write session("marca")%></td>
</tr>
<tr>

</tr>
<tr>
<td>2
<td>
<%
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation=3
sql="...stringa sql funzionante..."

rs.open sql,conn,0, 1
%>
Scegli il modello:
<td><select id="CodModello" name="CodModello" onChange="GoUrl(2,this.value)">
<option value="**" selected>Scegli il modello</option>
<%
do until rs.EOF
%>
<option value="<%=rs("CodModello")%>"><%=rs("Descrizione")%></option>
<%
rs.movenext
loop
%>
<%
rs.Close
set rs=nothing
conn.close
set conn=nothing
%>
</select></td>
<td>&nbsp;</td>
</tr>
</form>
</table>



</body>
</html>

------------------------------------------------

Sostanzialmente, invece di visualizzare a monitor il codice scelto dall'utente,
mi servirebbe intercettare la stringa che contiene la marca, e posizionarla
nel <select>, per far in modo che l'utente, scegliendo il modello, abbia ancora
a vista la marca che ha scelto.
In futuro mi servirebbe anche una dritta su come far in modo che questo processo
appaia in un pop-up e, scelti marca---->modello--->allestimento, questi tre campi
si vadano a posizionare su tre <input> di tipo text che memorizzino le scelte fatte.
Spero di essermi fatto intendere, e di aver stimolato a sufficienza le vostre fervide menti.

A.
 

Discussioni simili