Filtrare i dati da DataBase con 2 DropDownList

L'esempio che vedremo chiama in azione 2 Drop Down List, le quali filtrano i dati da un DataBase. Si supponga di avere una tabella abbastanza corposa di dati e voler gradualmente mostrare i risultati a video.

L'ipotetica tabella potrebbe contenere in una colonna la nazione di appartenenza dei clienti e nell'altra il nome della loro azienda. Se volessimo impostare una query del tipo: "Visualizzare i clienti raggruppati per nazione ed in base a questa, elencarli tutti quanti", otterremo tante ripetizioni del nome delle nazioni per quanti sono i clienti.

E' pur vero che si potrebbero fare 2 tabelle messe in relazione (una per le nazioni e l'altra per il nome delle aziende) ma... vogliamo usare una sola tabella.

Il tipo di dati è facilmente intuibile; avremo:

  • ID » contatore e Chiave Primaria;
  • Nazione » testo
  • Cliente » testo

Il primo controllo Drop Down List deve estrarre le Nazioni. Cominciamo ad importare nella Web Form il primo controllo e lo associamo alla base di dati. Il codice è:

<asp:DropDownList 
    ID="DropDownListNazioni" 
	runat="server" 
	AutoPostBack="True" 
	DataSourceID="AccessDataSource1" 
	DataTextField="nazione" 
	DataValueField="nazione">
</asp:DropDownList>

Eseguendo la pagina nel browser dovremmo leggere, nell'elenco, il nome di tutte le nazioni. Per evitare i "doppioni" il codice nell' AccesDataSource è il seguente:

SelectCommand="SELECT DISTINCT [nazione] FROM [NomeTabella]"

Per quanto riguarda la Drop Down List dei clienti, si importi un secondo controllo e si crei una seconda connessione. Negli step dell' istruzione SELECT formulare la query in modo tale che a seconda della nazione selezionata, la seconda Drop Down List mostri tutti i nomi relativi. Il codice è:

<asp:DropDownList 
    ID="DropDownClienti" 
	runat="server" 
	DataSourceID="AccessDataSource2" 
	DataTextField="cliente" 
	DataValueField="id">
</asp:DropDownList>

Possiamo vedere le 2 DDList in azione, qui di seguito.

Seleziona una Nazione:

Clienti Raggruppati per Nazione:

Per fare in modo che il secondo menu di selezione appaia solo dopo aver scelto la nazione, si deve aggiungere un solo rigo di codice nella pagina:

DropDownClienti.Visible = True

Ovviamente si potrebbe continuare con altri passaggi del tipo: visualizzare i dati dell'azienda selezionata, in maniera più dettagliata. Il procedimento rimane simile a questo descritto.