Paginazione di risultati con la classe PagedDataSource

di Andrea Zani, in UserScript, ASP.NET, ADO.NET,

Nello script #445 si è visto come effettuare la paginazione con web control che non permettono questa possibilità come il Datalist. In quell'esempio viene utilizzato il metodo "Fill" del DataAdapter specificando anche il range dei dati da inserire nei webcontrol. Possiamo utilizzare anche un'altra soluzione grazie alla classe PagedDataSource presente nel namespace System.Web.UI.WebControls.
Possiamo utilizzare questa classe come mezzo intermedio tra la fonte dei dati e il web control per la visualizzazione di essi e per effettuare la paginazione.

Ecco un esempio dell'utilizzo di questa classe con un Repeater:

<script runat="server" Language="VB">

Sub Page_Load()

  ' Prendo il numero di pagina dalla collection QueryString
  Dim numero as integer=1
  if not Request.QueryString("pagina") is nothing then
    numero=Convert.ToInt32(Request.QueryString("pagina"))
  end if

  ' creo una lista per il repeater
  Dim lista as new ArrayList
  for i as integer=1 to 100
    lista.Add("articolo "+i.ToString())
  next

  ' Inserisco l'arraylist nel pageddatasource

  Dim paginazione as new PagedDataSource

  paginazione.DataSource=lista
  paginazione.AllowPaging=true
  paginazione.PageSize=10
  paginazione.CurrentPageIndex=numero-1

  ' Modifico i link per cambiare pagina
  pagina.InnerText=numero.ToString()
  if not paginazione.IsFirstPage then
    prima.Href="PagedDataSource.aspx?pagina="+(numero-1).ToString()
  end if
  if not paginazione.IsLastPage then
    dopo.Href="PagedDataSource.aspx?pagina="+(numero+1).ToString()
  end if

  ' Visualizzo i dati
  elenco.DataSource=paginazione
  elenco.DataBind()

End Sub

</script><form runat="server">
<p align="center">
<a id="prima" runat="server"><</a>
<span id="pagina" runat="server">1</span>
<a id="dopo" runat="server">></a></p>
<asp:repeater id="elenco" runat="server">
  <headertemplate>
    <table border="1" align="center">
  </headertemplate>
  <footertemplate>
    </table>
  </footertemplate>
  <itemtemplate>
    <tr><td><%# Container.DataItem %></td></tr>
  </itemtemplate>
</asp:repeater>
</form>

Approfondimenti


#445 - La paginazione manuale con il DataSet di ADO.NET ed un Repeater
https://www.aspitalia.com/liste/usag/script.aspx?ID=445

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

I più letti di oggi