Newsgroup: it.comp.www.asp
Titolo: Due elenchi in cascata?

Come posso gestire due aree di testo con elementi fra loro collegati?
Supponiamo di avere una prima con le categorie e quando clicco su una delle
due la seconda,
inizialmente vuota viene popolata (tramite select su DB) con gli elementi
correlati.
So gestire l'accesso ai dati ma l'unica idea che mi viene è quella di fare
un accesso al server dopo
il click sulla prima colonna per generare la nuova pagina HTML tramite ASP.
C'è un modo per scaricare tutti i dati sul client tramite ASP e poi gestire
la pagina dinamicamente?
Grazie
Emiliano

Si, ma devi ammattire col DHTML ed i tempi di risposta diventano bibblici...
soluzione semplice: dividi la form in due, prima scegli da una e dopo aver
scelto 'ok continua' passi alla seconda.
Davide

Sono daccordo con Davide, se la query estrae troppi dati rischi.
Se pero' le due list box sono poco popolate puoi provare:
<HTML>
<HEAD><TITLE>Dynamic Select Lists</Title></Head>
<BODY OnLoad="BuildContacts(0);">
<FORM Name="myForm">
Salesperson:
<SELECT Name="SalesNames" OnChange="BuildContacts(this.selectedIndex);">
      <OPTION Value="Jeff">Jeff
      <OPTION Value="Charles">Charles
      <OPTION Value="Rick">Rick
      <OPTION Value="Kevin">Kevin
</Select>
<BR><BR>
Contacts:
<!-- We want to define at least one option so that the select tag is created
       with the correct dimensions-->
<SELECT Name="SalesContacts">
      <OPTION Value="">--------
</Select>
</Form>
</Body>
</Html>
<SCRIPT Language="JavaScript"><!--
file://Build arrays for each person's contacts
Contacts=new Array(4);
Contacts[0]=new Array(3);
Contacts[1]=new Array(2);
Contacts[2]=new Array(5);
Contacts[3]=new Array(4);
file://Charles
Contacts[0][0]="Bill";
Contacts[0][1]="Bob";
Contacts[0][2]="Chuck";
file://Jeff
Contacts[1][0]="Vern";
Contacts[1][1]="Matt";
file://Rick
Contacts[2][0]="Diana";
Contacts[2][1]="Dave";
Contacts[2][2]="Todd";
Contacts[2][3]="Sherry";
Contacts[2][4]="Sharon";
file://Kevin
Contacts[3][0]="Brian";
Contacts[3][1]="Trisha";
Contacts[3][2]="Greg";
Contacts[3][3]="Troy";
file://Call this to build the Contact list for the specified Salesperson
function BuildContacts(num)
{
      file://Select the first Contact
      document.myForm.SalesContacts.selectedIndex=0;
      file://For every contact in the array for this person, add a new
option
      for(ctr=0;ctr<Contacts[num].length;ctr++)
      {
       document.myForm.SalesContacts.options[ctr]=new
Option(Contacts[num][ctr],Contacts[num][ctr]);
      }
      file://Set the length of the select list
      document.myForm.SalesContacts.length=Contacts[num].length;
}
file://--></Script>
occhio che il mio amato outlook sostituisce la doppia slash con file:doppia
slash
Ciao, Fabio Zed Zamparelli
P.S. Visto che questa e' una questione comunissima tra chi programma in asp
nonostante totalmente lato client mi permetto di non giudicarla OT.


Per una visione dinamica della pagina dovresti usare i layer (su 
www.html.it
trovi un buon esempio, che permette, premendo un qualsiasi riferimento, a
cambiare dinamicamente una zona della pagina). Ma corri i rischi già citati
da Davide e Fabio (se il tuo database ti ritorna troppi valori preparati ad
attendere tempi biblici).
Ciao
Andrew

 la pagina dinamicamente?
Io ho usato questo sistema: ho creato dei file .csv con dentro tutte le
opzioni
necessarie a definire le scelte presenti negli elenchi a cascata.
Poi con un controllo ActiveX, carico i .csv al momento del load della
pagina.
Infine con Javascript vado a popolare il secondo elenco in funzione della
scelta
fatta nel primo con l'evento OnChange().
I file .csv saranno costruiti in modo da contenere almeno un campo chiave
che
correli la scelta fatta in precedenza con i valori da popolare nell'elenco
successivo.
L'unico problema di questo metodo è che ti vincoli ad IE, se vuoi mantenere
la compatibilità con NS devi definire degli array con i valori dei vari
elenchi
al posto dei .csv. Io ho optato per i .csv perchè sono facilmente
manutenibili
da un qualsiasi utente tramite Excel, mentre con gli array dovresti entrare
nella pagina .htm ogni volta che devi fare una modifica.
Federico.