Per chi è ormai addentro nell'uso dei database con le ASP tradizionali il concetto di paginazione è un argomento noto. ADO permette una sua facile gestione (che ricordo permette di dividere il risultato di una semplice query su più pagine) grazie alle proprietà "PageSize", "AbsolutePage", "PageCount" dell'oggetto recorset. Per maggiori informazioni a riguardo consiglio la lettura dell'articolo di Luca Milan presente su questo stesso sito.
Anche se molto intuitivo, ogni singolo punto seguente comporta sempre un certo "lavoro" da parte del programmatore per la scrittura di codice:
- controllare quanti record ha restituito la query;
- visualizzare il contenuto del database nel numero esatto di record della pagina;
- inserire l'eventuale link per tornare alla pagina precedente se non si è nella prima pagina;
- inserire l'eventuale link per la pagina successiva se non si è all'ultima pagina.
Con ASP.NET possiamo risparmiarci gran parte del lavoro.
Se visualizziamo il contenuto di una tabella con il "Datagrid" (per esempi sul suo utilizzo consiglio la lettura dell'articolo di Matteo Stori) è possibile effettuare la paginazione in automatico, impostando la proprietà "AllowPaging" a "True".
In questo modo sarà il motore ASP.NET a scrivere il codice HTML e JavaScript contenente la tabella con i record da noi previsti e con gli eventuali link per passare da una pagina all'altra, senza nessun altro sforzo o aggiunta da parte nostra.
Estrazione dal database
In questo primo esempio presente nell'allegato di questo articolo, lo script visualizza il datagrid di una tabella presente nel database contenente 150 record, 15 alla volta. Il datagrid ha questa struttura:
<ASP:DataGrid id="MyDataGrid" runat="server" Width="100%" BackColor="#ccccff" BorderColor="black" ShowFooter="false" cellpadding=3 cellspacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" alternatingItemStyle-BackColor="#aaaadd" AllowPaging="True" AllowCustomPaging="false" PageSize="15" OnPageIndexChanged="saltapagina"> < PagerStyle Mode="NextPrev" HorizontalAlign="Right" Position="top" ForeColor="White" BackColor="#9a5162" NextPageText="Next Page >>" PrevPageText=" < < Prev. Page"> < /PagerStyle> < /asp:datagrid>
Da notare le proprietà "alternatingItemStyle-BackColor", "AllowPaging", "AllowCustomPaging", "PageSize", "PagerStyle". La prima imposta il colore di fondo delle celle per le righe dispari in modo completamente automatico. "AllowPaging" imposta la paginazione del datagrid. "AllowCustomPaging" verrà esaminata in maniera approfondita con il terzo esempio, ma per questo esempio dovrà essere impostato a "False". "PageSize" è il numero di record da visualizzare per pagina. "PagerStyle" imposta la visualizzazione dei link per saltare da una pagina all'altra.
Un'altra proprietà fondamentale per l'utilizzo della paginazione è "OnPageIndexChanged". In essa dovremo scrivere il nome della Sub che elaborerà il salto pagina.
Questa è la subroutine che inserisce il contenuto della tabella1 nel datagrid:
sub binddata() Dim DS As DataSet Dim MyConnection as OleDbConnection Dim MyCommand As OleDbDataAdapter Dim quanti as integer MyConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source="+server.mappath("database.mdb")) MyConnection.Open() MyCommand = New OleDbDataAdapter("select * from tabella1", MyConnection) DS = new DataSet() MyCommand.Fill(ds, "tabella1") ' in quanti viene inserito il numero di record della tabella quanti = ds.Tables("tabella1").Rows.Count.ToString() dim source as dataview=ds.Tables("tabella1").DefaultView MyDataGrid.DataSource=source MyDataGrid.DataBind() MyConnection.close() lblMessage.Text = "Pagina " & MyDataGrid.CurrentPageIndex+1 & _ " di " & MyDataGrid.PageCount & _ ". Record presenti=" & quanti End Sub
La sub chiamata quando l'utente deciderà di passare ad altre pagine (inserito in "OnPageIndexChanged" nel datagrid), è la seguente:
sub saltapagina(sender as Object , e as DataGridPageChangedEventArgs) MyDataGrid.CurrentPageIndex = e.NewPageIndex binddata() end sub
Una volta richiamato dal nostro browser questa pagina, otterremo questo risultato:
In altro a destra i link per saltare da una pagina all'altra, in basso il numero di pagina attuale e i record presenti. Tutto con poche righe di codice.
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.