62 messaggi dal 05 dicembre 2003
Salve a tutti

nella mia pagina ASP ho una combo che viene riempita con dei campi da un DB, avrei bisogno di creare sotto di questa un'altra combo che filtri i dati già caricati in base alla scelta della combo sopra. Tutto questo senza ricaricare la pagina, quindi l'unica idea che mi è venuta è quella di usare un javascript.

Sapreste darmi un idea di come farlo.

Grazie a tutti
Aldo
252 messaggi dal 18 dicembre 2001
Ciao, beh secondo me non è una buona idea.. Meglio un postback in più, piuttosto che riempire un array di 3000 elementi per poi "filtrarne" solo 10 attraverso un javascript.. Perchè vuoi risparmiare a forza questo postback?..
Buon Lavoro..
Rei.

Rei.
62 messaggi dal 05 dicembre 2003
Questa pagina ha molti altri campi da postare, è per evitare di riprenderli al secondo reload.

Grazie per l'informazione
Ciao Aldo
252 messaggi dal 18 dicembre 2001
Capisco, ma scusa, puoi prenderli direttamente dalla request.form, senza ripsanderli dal DB, cioè per essere precisi, devi riprendere solo i dati di riempimento delle combo.. Con un po' di ingegno potresti evitare anche questo, ma non voglio complicarti la vita..
Rispondo quindi alla tua domanda, quello che mi viene in mente è di riempire un array con i tutti i valori che vanno nella combo, quindi caricare la seconda combo con un filtro applicato alla prima combo prelevandoli con un ciclo javascript dall'array.. Questo comporta ovviamente molto codice javascript..
Per questo motivo ti dico, sarebbe molto meglio "sprecare" un postback..

Rei.
277 messaggi dal 30 settembre 2003
Se tu va di studiarci da solo e usarti il codice... ecco il mio... io l'ho già fatto e va da dio !!!!
Tieni :

<script type="text/javascript">

// ************************
// DICHIARAZIONI VARIABILI
// ************************
var disciplineTotali_label = new Array();
var disciplineTotali_text = new Array();
var disciplineTotali_value = new Array();
var modalita = ""
var calendario=""

// ************************************************************
// FUNZIONE PER RESET VARIABILI E IMPOSTAZIONI INIZIALI PAGINA
// ************************************************************
function impostazioniIniziali(){
for (i=0;i < (document.all.Disciplina.length);i++){
disciplineTotali_label[i] = document.all.Disciplina[i].label
disciplineTotali_text[i] = document.all.Disciplina[i].text
disciplineTotali_value[i] = document.all.Disciplina[i].value

}
cambiaDisciplina(document.all.Professione.value)
if (document.all.indiceDisciplina.value != ""){
for (i=0;i < (document.all.Disciplina.length);i++){
if (document.all.Disciplina[i].value == document.all.indiceDisciplina.value){
document.all.Disciplina.selectedIndex = i
}
}
}
}

// ***********************************************************
// FUNZIONE PER AGGIORNAMENTI SU MENU A TENDINA - PROFESSIONI
// ***********************************************************
function cambiaDisciplina(cod_Professione){
for (i = document.all.Disciplina.length; i > 0; i--){
document.all.Disciplina.options[i] = null
}
ind = 1
for (i=0;i < (disciplineTotali_label.length);i++){
if (disciplineTotali_label[i] == cod_Professione){
document.all.Disciplina.options[ind] = new Option("")
document.all.Disciplina[ind].label = disciplineTotali_label[i]
document.all.Disciplina[ind].text = disciplineTotali_text[i]
document.all.Disciplina[ind].value = disciplineTotali_value[i]
ind = ind + 1
}
}
// SE NON CI SONO PROFESSIONI NON VISUALIZZA DISCIPLINE
if (document.all.Professione.selectedIndex == 0){
for (i = document.all.Disciplina.length; i > 0; i--){
document.all.Disciplina.options[i] = null
}
}
}
</script>



<body bgcolor="#FFFFFF" text="#000000" onLoad="impostazioniIniziali()" >




<!-- SELECT CON ACCESSO DB PER SELECT PROFESSIONI -->
<%
strSQL =""
strSQL = strSQL & "SELECT * FROM Professioni "
strSQL = strSQL & "order by Professione"

rs.Open strSQL, cn, 3

rs.MoveFirst

index = 1

scrittoProfessione = 0
%>
<select name="Professione" class="login-text" style="width:127;" onChange="cambiaDisciplina(this[this.selectedIndex].value)" tabindex="9">
<option selected></option>
<%
Do while not RS.EOF
%>
<option value="<%=rs("cod_professione")%>"><%=rs("professione")%></option>
<%
if cod_professione= rs("cod_professione") then
scrittoProfessione = index
end if

rs.MoveNext

index = index + 1

Loop

response.write ("<input type='hidden' name='indiceProfessione' value='" & scrittoProfessione & "'>")
%>
</select>
<%
rs.Close
%>



<%
rs.close
'----------------- SELECT CON ACCESSO DB PER SELECT DISCIPLINA
'
strSQL =""
strSQL = strSQL & "SELECT Discipline.Disciplina,Discipline.Cod_Disciplina, Associa_ProDis.Cod_Professione, Professioni.Professione FROM Discipline "
strSQL = strSQL & "LEFT OUTER JOIN Associa_ProDis ON Discipline.Cod_Disciplina = Associa_ProDis.Cod_Disciplina "
strSQL = strSQL & "LEFT OUTER JOIN Professioni ON Associa_ProDis.Cod_Professione = Professioni.Cod_Professione "
strSQL = strSQL & "order by Discipline.Disciplina"

rs.Open strSQL, cn, 3
rs.MoveFirst
index = 1
scrittoDisciplina = 0
%>

<select name="Disciplina" class="login-text" style="width:127;height:127" tabindex="11">
<option selected></option>
<%
Do while not RS.EOF
%>
<option label="<%=rs("Cod_professione")%>" value="<%=rs("cod_disciplina")%>"><%=rs("disciplina")%></option>
<%
rs.MoveNext
index = index + 1

Loop

response.write ("<input type='hidden' name='indiceDisciplina' value='" & cod_disciplina & "'>")

%>
</select>
<%
rs.Close
%>

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.