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 SubLa 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 subUna 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
Contenuti dell'articolo
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.








Difficoltà

Stampa
Download



