Jde o kompozitní server control určený pro ovládání stránkování. Motivací k vytvoření prvku bylo vytvoření podobného stránkování, jaké známe z GridView, avšak pro použití s prvkem Repeater či DataList ve formuláři a se zachováním přístupnosti, nezávislosti na klientském skriptování. Pro stránkování jsou uživateli nabídnuty volitelně tlačítka vpřed,zpět a/nebo sada radiobuttonů ukazujících přímo číslo stránky a zvolenou stránku, čímž je zajištěna korektní funkčnost formuláře i bez podpory klientského skriptování.
Prvek také zajišťuje inteligentní vykreslení daného počtu čísel stránek a automaticky doplní odkaz na "další sadu stránek", prvky, které nemají v dané
situaci smysl jsou zakázané (např. přechod na předchozí stránku v situaci, kdy jsme na první stránce).
Ideálně se hodí pro použití ve spojení s univerzální stránkovací procedurou, viz článek
Univerzální stránkovací procedura v MS SQL.
Stylovaný prvek s podporou klientského skriptování (na konci odkaz na "další sadu" stránek)
![]()
Stylovaný prvek po přechodu na další sadu stránek (na začátku odkaz na předchozí sadu stránek)
![]()
Bez stylování (na začátku odkaz na předchozí sadu stránek)

Bez stylování a podpory JavaScriptu (je k dispozici tlačítko pro potvrzení volby stránky - nefunguje zde AutoPostBack)

Bez stylování a podpory JavaScriptu - na první stránce, tlačítko "Předchozí" je ve stavu Disabled

public String GoToPageText
- text tlačítka pro přechod na zvolenou stránku, tlačítko se zobrazuje pouze pokud klient nepodporuje JavaScript
public String GoToPageToolTip
- tooltip tlačítka pro přechod na zvolenou stránku, tlačítko se zobrazuje pouze pokud klient nepodporuje JavaScript
public String NumericPagesToolTip
- tooltip radiobuttonů pro přechod na zvolenou stránku
public String NextPageText
- text tlačítka pro přechod na následující stránku
public String NextPageToolTip
- tooltip tlačítka pro přechod na následující stránku
public String PrevPageText
- text tlačítka pro přechod na předchozí stránku
public String PrevPageToolTip
- text tlačítka pro přechod na následující stránku
public String ButtonCssClass
- třída CSS pro tlačítka
public String RadioButtonCssClass
- třída CSS pro radiobuttony
public Int32 VirtualItemCount
- vrací nebo nastaví virtuální (celkový) počet položek, které jsou stránkovány - vlastnost má týž význam, jako u prvků DataGrid, GridView
public Int32 SelectedPageIndex
- vrací nebo nastaví index právě zvolené stránky
public Int32 PageCount
- pouze vrací celkový počet stránek ke stránkování
public Int32 PageSize
- vrací nebo nastaví počet položek v jedné stránce - vlastnost má týž význam, jako u prvků DataGrid, GridView
public Int32 PageButtonCount
- vrací nebo nastaví maximální počet položek číselných buttonů (čísel) stránek, na konci nebo začátku seznamu je generován odkaz pro přechod na "další sadu"
stránek, pokud nějaká předchází/následuje - vlastnost má týž význam, jako u prvků DataGrid, GridView
public PaginationNumericRepeatDirection NumericRepeatDirection
- styl zobrazení čísel stránek - radiobuttonů
public PaginationMode Mode
- režim zobrazení stránkovacích prvků
public Boolean CausesValidation
- nastavuje, zda použití prvku vyvolává validaci stránky
public event EventHandler SelectedPageIndexChanged
- je vyvolána v okamžiku, kdy je změněn index zvolené stránky, hodí se tedy pro získání dat dané stránky z datového zdroje a navázání na zobrazovací prvek
public enum PaginationMode - režim zobrazení ovládacích prvků
- AllControls: čísla stránek i tlačítka vpřed/zpět
- NextPrev: pouze tlačítka vpřed/zpět
- Numeric: pouze čísla stránek
public enum PaginationNumericRepeatDirection - způsob zobrazení čísel stránek
- Horizontal: vodorovně
- Vertical: svisle
private void Page_Load(object sender, System.EventArgs e)
{
pgnSearch.GoToPageText = Global.LocalizationManager.GetString("PaginationGoToPageText");
pgnSearch.GoToPageToolTip = Global.LocalizationManager.GetString("PaginationGoToPageToolTip");
pgnSearch.NumericPagesToolTip = Global.LocalizationManager.GetString("PaginationNumericPagesToolTip");
pgnSearch.NextPageText = Global.LocalizationManager.GetString("PaginationNextPageText");
pgnSearch.NextPageToolTip = Global.LocalizationManager.GetString("PaginationNextPageToolTip");
pgnSearch.PrevPageText = Global.LocalizationManager.GetString("PaginationPrevPageText");
pgnSearch.PrevPageToolTip = Global.LocalizationManager.GetString("PaginationPrevPageToolTip");
..
if (!Page.IsPostBack)
Bind_Page(sender, e);
}
private void Bind_Page(Object sender, EventArgs e)
{
using (SqlConnection connection = new SqlConnection(PublicDBReaderString))
{
using (SqlCommand myCmd = new SqlCommand("[dbo].[PaginateTable]",connection))
{
myCmd.CommandType = CommandType.StoredProcedure;
myCmd.Parameters.Add("@PageSize", SqlDbType.Int).Value = pgnSearch.PageSize;
myCmd.Parameters.Add("@CurrentPageIndex", SqlDbType.Int).Value = pgnSearch.SelectedPageIndex;
myCmd.Parameters.Add("@TableName", SqlDbType.VarChar,64).Value = "[dbo].[Events]";
myCmd.Parameters.Add("@KeyField", SqlDbType.VarChar,32).Value = "[EventDate]";
myCmd.Parameters.Add("@RowFilter", SqlDbType.VarChar,3128).Value = "DATEDIFF(dd,[EventDate],GETDATE()) <= 0";
try
{
connection.Open();
SqlDataReader myReader = myCmd.ExecuteReader();
if (myReader.Read())
pgnSearch.VirtualItemCount = myReader.GetInt32(0);
else
pgnSearch.VirtualItemCount = 0;
if (pgnSearch.PageCount > 1)
pgnSearch.Visible = true;
else
pgnSearch.Visible = false;
myReader.NextResult();
rptSearch.DataSource = myReader;
rptSearch.DataBind();
myReader.Close();
connection.Close();
}
catch
{
blnError.Visible = true;
}
finally
{
if (connection.State != ConnectionState.Closed)
connection.Close();
}
}
}
}
private void InitializeComponent()
{
this.pgnSearch.SelectedPageIndexChanged += new System.EventHandler(this.Bind_Page);
this.Load += new System.EventHandler(this.Page_Load);
}
<div class="pagingElement">
<Pc:Pagination Id="pgnSearch" Mode="AllControls" Visible="False" CausesValidation="False" ButtonCssClass="pageButton" RadioButtonCssClass="pageRadio"
PageButtonCount="5" PageSize="10" RunAt="server" />
</div>