Un controllo Pager che sia in grado di rendere possibile la creazione di un insieme di link che puntino alle pagine di una ricerca può risultare utile in quasi tutte le applicazioni web, specie quando si abbina all'utilizzo di sistemi di paginazione dei dati direttamente sul database.
Il custom control che segue è un semplice control che accetta 3 parametri in ingresso, costruendo la lista delle pagine con il relativo link.
Va quindi prima creata una classe con questo codice, da compilare in un assembly:
using System; using System.Text; using System.Web.UI; using System.Web.UI.WebControls; namespace ASPItalia.com.UI.Controls { public class Pager : System.Web.UI.Control { // numero di pagine private int totalPages; public int TotalPages { get {return totalPages;} set {totalPages = value;} } // pagina attuale private int pageIndex; public int PageIndex { get {return pageIndex;} set {pageIndex = value;} } // url a cui far puntare private string url; public string Url { get {return url;} set {url = value;} } private string text = "<b>{0} pagine in totale:</b>"; protected override void Render(HtmlTextWriter output) { output.Write(buildPager()); base.Render(output); } // creo il pager private string buildPager() { if (totalPages> 1) { StringBuilder lb = new StringBuilder(); lb.AppendFormat(text, totalPages.ToString()); lb.Append(" "); // pagina precedente if (pageIndex>1) lb.Append(BuildSinglePage(pageIndex-1, "<b><<</b>")); // tutte le pagine for (int i = 1; i<=totalPages; i++) lb.Append(BuildSinglePage(i, null)); // pagina successiva if (pageIndex < totalPages) lb.Append(BuildSinglePage(pageIndex+1, "<b>>></b>")); // restituisco il contenuto del pager return lb.ToString(); } return String.Empty; } // costruisco il link alla singola pagina string BuildSinglePage(int i, string text) { // se non c'è testo speciale, usiamo il numero di pagina if (text == null) text = i.ToString(); return (pageIndex == i)? String.Concat("<b>", i.ToString(), "</b> "): String.Concat("<a href=\"", String.Format(Url, i.ToString()), "\">", text, "</a> "); } } }
Una vola registrato il control sulla pagina, per inserirlo in prossimità dei risultati occorre passare i valori, calcolati dall'estrazione nel database. Eccone un esempio di utilizzo:
<SCRIPT RUNAT="SERVER" LANGUAGE="C#"> void Page_Load() { // estrazione dei dati // .... // definizione del pager // lasciare {0}, sarà sostituito dal control pager.Url = "ricerca.aspx?key=" + key + "&p={0}"; pager.PageIndex = 1 pager.TotalPages = 15 } </SCRIPT> <aspitalia:pager id="pager" runat="server" />
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.