Creare dei form in maniera dinamica tramite database è un'ottima soluzione per gestire eventuali modifiche dei contenuti, aggiornamenti, ed avere un maggior controllo dei documenti e con ASP.NET tutto ciò è reso ancora più semplice.
In quest'articolo vedremo come popolare una drop down list e mostrare a schermo nella stessa pagina il risultato della selezione effettuata dall'utente, utilizzando gli oggetti Datagrid e Datareader di ASP.NET e ADO.NET, ed utilizzando la funzionalità di databinding (ossia di mappatura di una fonte dati su un oggetto).
Il progetto
Immaginiamo di dover gestire una piccola biblioteca online e creare una sezione in cui un utente possa vedere le opere relative ad un certo autore. Lo schema che dovremo utilizzare a grandi linee sarà quello mostrato in figura:
Il database
In questo esempio verrà utilizzato un database access2000 (autori.mdb), che trovate contenuto nell'allegato.
Ad ogni modo, la sua struttura è la seguente:
tblAutori
AutoreID | contatore, primary key |
nome | testo |
tblOpere
AutoreID | numerico |
Opera | test |
Descrizione | memo |
La cosa fondamentale da notare è che il campo AutoreID della tabella tblOpere è una chiave esterna di AutoreID della tabella tblAutori, la quale funge infatti da tabella di ricerca; in questo modo attribuiremo un identificatore, un numero, a ciascuna opera, che così verrà "etichettata" come appartenente a quel determinato autore. Ogni autore infatti avrà il suo ID univoco.
Dopo aver creato e inserito i dati nelle nostre tabelle, dovremo metterne in relazione le due colonne AutoreID attraverso un diagramma relazioni.
Creiamo e popoliamo la dropdownlist
Con il prezzo di codice seguente, andremo a creare la dropdownlist ed utilizzando i datareader di ADO.NET, estrarremo i valori dal database per farli mostrare a video.
<html> <head> <title>Dropdownlist</title> <!-- attraverso queste due direttive importiamo le librerie che ci serviranno per effettuare le connessioni con Access2000 --> <% @Import Namespace="System.Data" %> <% @Import Namespace="System.Data.OleDb" %> <script language="VB" runat="server">
Sub Page_Load(sender as Object, e as EventArgs) 'la proprietà IsPostBack del gestore di eventi (handler) Page_Load è impostata 'a true se la pagina è stata ricaricata, ad esempio attraverso un pulsante submit 'di un form. Questa è una proprietà molto utile per gestire i form ed eseguire routine 'di verifica. If Not Page.IsPostBack then 'connessione al database Dim strConn as string ="PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & server.mappath("autori.mdb") Dim objConn as New OleDbConnection(strConn) 'apro l`oggetto objConn objConn.Open() 'imposto la query sql e inizializzo l`istanza dell`oggetto OleDbCommand Dim strSQL as String = "SELECT * FROM tblAutori" Dim objCommand as New OleDbCommand(strSQL, objConn) 'Creo/Popolo il DataReader e chiudo la connessione 'un DataReader in ADO.NET non è altro che un 'RecordSet aperto con un cursore forward-only Dim objDataReader as OleDbDataReaderv objDataReader = objCommand.ExecuteReader(CommandBehavior.CloseConnection) 'Databind dei dati alla drop down list; 'con questo metodo colleghiamo i dati 'al form nel codice html lstAutori.DataSource = objDataReader lstAutori.DataBind() end if End Sub
</script> </head> <body bgcolor="#FFFFFF" text="#000000"> <h4><a id="title_4"></a>Scegli l'autore</h4> <!-- attraverso l'attributo DataTextField specifichiamo cosa verrà visualizzato nel menu, mentre attraverso DataValueField la value di ciascuna option; questi due valori corrispondono ai nomi delle colonne. L'attributo Rows specifica invece il numero di option visibili al caricamento della pagina. Da notare che per default vengono mostrate tutte le opzioni. --> <form runat="Server"> <asp:listbox id="lstAutori" runat="server" Rows="1" DataTextField="nome" DataValueField="autoreID" /> <!-- in questo spazio aggiungeremo il pulsante --> </form> <!-- in questo la datagrid --> </body> </html>
In questo modo abbiamo popolato il nostro form utilizzando i dati presenti nella tabella tblAutori, e possiamo procedere alla fase successiva.
Attenzione: Questo articolo contiene un allegato.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.