Datagrid, Datareader e databinding con ASP.NET e ADO.NET

di Matteo Stori, in ASP.NET,

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:

Immagine

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

AutoreIDcontatore, primary key
nometesto

tblOpere
AutoreIDnumerico
Operatest
Descrizionememo

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.

2 pagine in totale: 1 2

Attenzione: Questo articolo contiene un allegato.

Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti