Ciao, è richiesto un po' di javascript, ma nulla di estremamente complicato.
Si tratta di gestire l'evento
onchange della prima select e riempire la seconda con nuove voci, in base a ciò che è stato selezionato.
- Questi "nuovi valori" possono già trovarsi nella pagina - ad esempio sottoforma di array javascript. Qui trovi delle demo, in particolare guarda l'ultima al paragrafo chiamato "Linked select elements with data tables". Trovi anche il codice necessario al funzionamento.
http://www.infimum.dk/HTML/multiselect.html - Oppure, specie se le scelte sono tante, si preferisce non memorizzare i "nuovi valori" nella pagina per non appesantirla. In questo caso è opportuno effettuare delle richieste ajax in modo che il server ti restituisca solo le voci che andrai a visualizzare di lì a poco.
Il fatto che ci sia di mezzo ajax può sembrare una complicazione ma così non è, specie se usi jQuery e i suoi plugin.
Qui trovi appunto un plugin fornito di documentazione ed esempi:
http://www.erichynds.com/jquery/jquery-related-dependent-selects-plugin/
rico769 ha scritto:
dovrei realizzare una select dinamica (client side)tipo regioni/province
Penso che la prima soluzione possa andar bene. Le province italiane sono circa 110 quindi non così tante da appesantire la pagina. Magari definiscile in un file .js a sé stante così, dopo la prima visita, il file rimarrà nella cache del browser e verrà ricaricato istantaneamente nelle successive visite alla pagina.
Se, oltre alle province, volessi aggiungere anche una terza select per il comune, allora sarebbe proprio il caso di ricorrere ad ajax. I comuni italiani sono più di 8000.
rico769 ha scritto:
all'invio della form vorrei che i valori selezionati non fossero resettati.
Reimposta il valore selezionato usando il javascript. Usa una riga del genere:
document.getElementById('IdSelect').value = "<%= Request.Form("NomeSelect") %>";
La porzione di codice <%= Request.Form("NomeSelect") %> servirà a leggere dal form il valore della select e a ristamparlo subito nella pagina in quell'istruzione javascript. Se usi jQuery, in alternativa puoi anche fare così:
$("#IdSelect").val("<%= Request.Form("NomeSelect") %>");
(Questo codice va messo in un tag <script>, ad esempio prima della chiusura del body, oppure all'interno del $(document).
ready di jquery.)
ciao
Modificato da BrightSoul il 25 aprile 2012 16.37 -