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" />- Chi ha paura di ASP.NET MVC?
- MailWebEventProvider perche sei public e abstract
- StringValidatorAttribute ConfigurationProperty e DefaultValue
- Parte 2 e 3 della serie sui custom control ASP.NET su MSDN
- UserControl, UpdatePanel UrlRewrite, una combinazione vincente!
- #906 - Specificare la Culture della pagina con InitializeCulture
- Dal MIX08 la Preview2 di ASP.NET MVC
- UrlRewriting con trabocchetti vari
- WPF: dal DataBinding ai Template - Seconda parte
- #908 - Cache con dipendenze aggregate con AggregateCacheDependency
- Membership API per SQL Server anche senza dbo
- Integrare Windows Live ID, Contacts e Presence API nelle tue applicazioni
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Stampa
Snippet
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!