Source : chronique de snooker_li.
J'ai récemment créé un programme d'album photo qui nécessitait fréquemment une pagination, j'ai donc voulu écrire un contrôle utilisateur.
Le code est le suivant :
Page AutoPage.ascx
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="AutoPage.ascx.cs" Inherits="album.AutoPage" TargetSchema=" http://schemas.microsoft .com/ intellisense/ie5 " %>
<table border="0" cellpadding="0" cellpacing="0">
<tr>
<td valign="middle" height="30">Total des <asp:label id="lb_ItemCount" ForeColor="Red" runat="server"></asp:label> enregistrements </td>
<td valign="middle" height="30"><asp:hyperlink id="hpl_First" runat="server">Page d'accueil</asp:hyperlink> </td>
<td valign="middle" height="30"><asp:hyperlink id="hpl_Prev" runat="server">Page précédente</asp:hyperlink> </td>
<td valign="middle" height="30">Actuel<asp:label id="lb_CurrentPage" runat="server"></asp:label>pages/total<asp:label id="lb_PageCount" runat=" serveur"></asp:label>page </td>
<td valign="middle" height="30"><asp:hyperlink id="hpl_Next" runat="server">Page suivante</asp:hyperlink> </td>
<td valign="middle" height="30"><asp:hyperlink id="hpl_Last" runat="server">Dernière page</asp:hyperlink> </td>
<td valign="middle" height="30"><asp:textbox id="txb_Page" runat="server" width="32px" BorderStyle="Solid" BorderWidth="1px"
BorderColor="Argent"></asp:textbox></td>
<td valign="middle" height="30"><asp:ImageButton id="btn_go" runat="server" ImageUrl="album_images/go.gif"></asp:ImageButton></td>
<td valign="middle" height="30"><asp:label id="lb_url" runat="server" Visible="False"></asp:label><asp:Label id="lb_Params" runat= "serveur" Visible="False"></asp:Label></td>
</tr>
</table>
Album d'espace de noms
de page AutoPage.ascx.cs
{
utiliser le système ;
en utilisant System.Data ;
en utilisant System.Drawing ;
en utilisant System.Web ;
en utilisant System.Web.UI.WebControls ;
en utilisant System.Web.UI.HtmlControls ;
en utilisant System.Data.SqlClient ;
/// <résumé>
/// Description sommaire de l'UC.
/// </summary>
classe publique AutoPage : System.Web.UI.UserControl
{
protégé System.Web.UI.WebControls.HyperLink hpl_First ;
protégé System.Web.UI.WebControls.HyperLink hpl_Prev ;
protégé System.Web.UI.WebControls.HyperLink hpl_Next ;
protégé System.Web.UI.WebControls.Label lb_CurrentPage ;
protégé System.Web.UI.WebControls.Label lb_PageCount ;
protégé System.Web.UI.WebControls.HyperLink hpl_Last ;
taille de page publique int ;
chaîne publique PageP ;
protégé System.Web.UI.WebControls.TextBox txb_Page ;
protégé System.Web.UI.WebControls.Label lb_url ;
protégé System.Web.UI.WebControls.Label lb_ItemCount ;
URL de chaîne publique ;
protégé System.Web.UI.WebControls.Label lb_Params ;
protégé System.Web.UI.WebControls.ImageButton btn_go ;
chaîne publique Params ;
privé void Page_Load (expéditeur de l'objet, System.EventArgs e)
{
}
liaison de données PagedDataSource publique (DataTable dt)
{
lb_url.Text = url ;
lb_Params.Text = Paramètres ;
//Créer une classe de pagination
PagedDataSource objPage = new PagedDataSource();
//Définir la source de données
objPage.DataSource = dt.DefaultView ;
//Autoriser la pagination
objPage.AllowPaging = true ;
//Définir le nombre d'éléments affichés sur chaque page
objPage.PageSize = taille de page ;
//Définit l'index de la page actuelle
int CurPage=1;
essayer
{
CurPage = Convert.ToInt32(PageP);
si (CurPage<1 || CurPage>objPage.PageCount)
{
Réponse.Redirect(url+"?page=1"+Params);
}
}
attraper
{
Réponse.Redirect(url+"?page=1"+Params);
}
objPage.CurrentPageIndex = CurPage-1;
//Afficher les informations d'état
lb_ItemCount.Text = dt.Rows.Count.ToString();
lb_CurrentPage.Text = CurPage.ToString();
lb_PageCount.Text =objPage.PageCount.ToString();
//Si la page courante n'est pas la page d'accueil
si (!objPage.IsFirstPage)
{
hpl_Prev.NavigateUrl=url + "?Page=" + Convert.ToString(CurPage-1)+Params;
hpl_First.NavigateUrl=url + "?Page=1"+Params;
}
//Si la page courante n'est pas la dernière page
si (!objPage.IsLastPage)
{
hpl_Next.NavigateUrl=url+ "?Page=" + Convert.ToString(CurPage+1)+Params;
hpl_Last.NavigateUrl=url + "?Page=" +objPage.PageCount.ToString()+Params;
}
retourner objPage ;
}
Code généré par le concepteur de formulaires Web #region
remplacer le void protégé OnInit (EventArgs e)
{
//
// CODEGEN : cet appel est requis par le concepteur ASP.NET Web Forms.
//
InitializeComponent();
base.OnInit(e);
}
/// <résumé>
/// Designer prend en charge les méthodes requises - n'utilisez pas l'éditeur de code
/// Modifier le contenu de cette méthode.
/// </summary>
vide privé InitializeComponent()
{
this.btn_go.Click += new System.Web.UI.ImageClickEventHandler(this.btn_go_Click);
this.Load += new System.EventHandler(this.Page_Load }
)
#endregion
private void btn_go_Click (expéditeur de l'objet, System.Web.UI.ImageClickEventArgs e)
{
Response.Redirect(lb_url.Text+"?Page="+txb_Page.Text+lb_Params.Text);
}
}
}
Lors de l'appel, vous devez définir plusieurs paramètres pagesize (le nombre de données affichées sur chaque page), PageP (paramètres de pagination transmis), ParmP (autres paramètres Request.QureyString) et url (adresse de la page).
Lors de la liaison, vous seul
).besoin de lier le contrôle DataSource=AutoPage1.databind (variable DataTable)