Accueil   |   Forums   |  Offres d'emplois   |  Contact    |   Mon compte   
lundi 22 septembre 2014 Rechercher :
Déposez votre CV gratuitement sur touslesemplois
 
comparer les prix
» Logiciels
» Jeux vidéos
» Matériel Informatique


» ASP.NET
» ASP
» SQL
» PHP
» JAVASCRIPT
» XML
 


» ACTUALITÉ / DIVERS
» DROIT DE L'INTERNET
» INFOS VIRUS
» PATCHS MICROSOFT
» SÉCURITÉ
» BASES DE DONNÉES
» DOWNLOAD .NET
» LOGITHÈQUE
» SERVICES WEB
» Y SONT FOUS !
» .NET
» ASP
» ASP.NET
» JAVA
» PHP
» XML
» LANGAGE C#
» LANGAGE VB.NET
» UNIX / LINUX
» WINDOWS
» EVÈNEMENTS
» GASP
» MICROSOFT
 



Vous êtes ici : Articles ASP.NET > NOTES DE COURS

Modifier la pagination par défaut d'un Gridview en ASP.NET
Cet article vous explique comment associer à un GridView une pagination personalisée. Le but étant de controler totalement la pagination qui peut s'afficher dans ce contrôle.


ABONNEZ-VOUS GRATUITEMENT A LA REVUE DE PRESSE "LES Z'ACTUS" ET RECEVEZ CHAQUE JOUR DANS VOTRE BOITE AUX LETTRES LA MEILLEURE INFORMATION DEDIEE AUX WEBMASTERS / DEVELOPPEURS.

Indiquez votre adresse E-mail :

Technologie : ASP.NET 2.0, VS 2005 
Date : 29/05/2006   
Auteur : ASP MAGAZINE

Note : ce code n'est pas la seule possibilité de personnalisation, mais s'en est une ...

Mise en place

On place un objet panel qui est un conteneur d'objet dans la section <pagertemplate> du Gridview. Pour la suite on suppose que le GridView aura pour identifiant (ID) "mygrid" et que le panel sera nommé (ID) "mypage".

Voici le code partiel associé à ce gridview est le suivant :

<pagertemplate>
      <asp:Panel ID="mypage" runat="server" Height="50px" Width="125px">
      </asp:Panel>
</pagertemplate>

Code de création de la pagination

Le code ASP.NET de traitement de la pagination, va venir se placer au sein de la procédure DataBound du Gridview, exécuté pendant la constrcution de la grille de données dont l'entête est la suivante :

Protected Sub mygrid_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles mygrid.DataBound

Note : le code implémenté fonctionne normalement pour n'importe quelles sources de données.

Initialisation des variables

La variable pagerRow correspond à la zone contenant la pagination habituelle, la variable pageList est une copie de notre panel, la variable Index désigne la page en cours de visualisation.

Dim pagerRow As GridViewRow = mygrid.BottomPagerRow
Dim index As Integer = mygrid.PageIndex
Dim pageList As Panel = CType(pagerRow.Cells(0).FindControl("mypage"), Panel)

Dans notre cas on va construire une liste de liens (un peu à la manière de ce que fait un Gridview par défaut), mais on aurait pu envisager par exemple d'afficher une liste déroulante contenant la liste des pages.

Limitation du nombre de liens affichés

La section suivante à pour but d'initialiser 2 variables, la première debut va déterminer le numéro de page du premier lien qui sera affiché, la seconde fin contiendra le numéro de la dernière page à affiché. La variable nblien contient le nombre de liens que l'on souhaite voir apparaitre, celle-ci nous permet de déterminer dynamiquement en fonction de l'index de la page affichée, les valeurs de debut et de fin.

Exemble :
Debut=0
nblien=10 (nblien+1 seront affichés donc dans ce cas 11 liens)
fin=10

affichera quelque chose comme ceci

1 2 3 4 5 6 7 8 9 10 11

Voici le code de cette partie :

       Dim debut As Integer = 0
        Dim nblien As Integer = 10
        Dim fin As Integer = nblien
        If index - (nblien \ 2) >= 0 Then
            debut = index - (nblien \ 2)
            fin = index + (nblien \ 2)
        Else
            debut = 0
            fin = nblien
        End If
        If fin > mygrid.PageCount - 1 Then
            fin = mygrid.PageCount - 1
        End If

Afficher les liens

Cette section crée les liens utiles à la pagination et les ajoute dans l'objet panel. La boucle s'effectue de debut jusqu'à fin, variables que nous avons initialisé ci-dessus. Rien de particulier dans ce code si ce n'est que des objet Hyperlink et label (permettant l'espacement entre les liens) sont créés dynamiquement et ajoutés au panel. 

           For i = debut To fin
            Dim pageNumber As Integer = i + 1
            Dim hlink As New HyperLink
            Dim hlabel As New Label
            If i = index Then
                hlabel.Text = pageNumber
                hlabel.Font.Bold = True
                pageList.Controls.Add(hlabel)
            Else
                hlink.Text = pageNumber
                If pageNumber = 1 Then
                     '----- Url spéciale pour la page numéro 1 par exempl
                    hlink.NavigateUrl = "premierepage.aspx"
                Else
                    hlink.NavigateUrl = "premierepage.aspx?pagenum=" & (pageNumber - 1)
                End If
               pageList.Controls.Add(hlink)
            End If
            Dim space As New Label
            space.Text = "&nbsp;"
            pageList.Controls.Add(space)
        Next

Procédure complète

Protected Sub mygrid_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles mygrid.DataBound
        Dim pagerRow As GridViewRow = mygrid.BottomPagerRow
        Dim index As Integer = mygrid.PageIndex
        Dim pageList As Panel = CType(pagerRow.Cells(0).FindControl("mypage"), Panel)
        Dim i As Integer
        Dim debut As Integer = 0
        Dim nblien As Integer = 10
        Dim fin As Integer = nblien
        If index - (nblien \ 2) >= 0 Then
            debut = index - (nblien \ 2)
            fin = index + (nblien \ 2)
        Else
            debut = 0
            fin = nblien
        End If
        If fin > mygrid.PageCount - 1 Then
            fin = mygrid.PageCount - 1
        End If
 
       For i = debut To fin
            Dim pageNumber As Integer = i + 1
            Dim hlink As New HyperLink
            Dim hlabel As New Label
            If i = index Then
                hlabel.Text = pageNumber
                hlabel.Font.Bold = True
                pageList.Controls.Add(hlabel)
            Else
                hlink.Text = pageNumber
                  If pageNumber = 1 Then
                     '----- Url spéciale pour la page numéro 1 par exemple
                    hlink.NavigateUrl = "premierepage.aspx"
                Else
                    hlink.NavigateUrl = "premierepage.aspx?pagenum=" & (pageNumber - 1)
                End If
              pageList.Controls.Add(hlink)
            End If
            Dim space As New Label
            space.Text = "&nbsp;"
            pageList.Controls.Add(space)
        Next
   End Sub 



Proregna - L'hébergement ASP.NET


A RETENIR CETTE SEMAINE
17/03/2011 - Plus que deux jours pour s'inscrire à la conférence Entity Framework
Venez découvrir comment utiliser l'Entity Framework de façon optimale lors de la prochaine conférenc ...
16/03/2011 - Test Internet Explorer 9 : un navigateur en net progrès
Internet Explorer 9 est une mise à jour radicale du navigateur de Microsoft. Réservé à Windows 7 et ...
16/03/2011 - SharePoint : Accéder à son Intranet SharePoint depuis un IPhone ou IPad via SSL VPN
Lisez ce post de Fabrice Romelard dans lequel il explique comment accéder à SharePoint depuis les ma ...
15/03/2011 - Internet Explorer 9 à télécharger
Après des mois de bêta publique, et une récente version RC (Release candidate), Microsoft a enfin ac ...
15/03/2011 - MSDN Magazine : Sélection des articles Azure en français
Retrouvez notre sélection des meilleurs articles en français concernant la plateforme Windows Azure ...
15/03/2011 - Webcasts Azure des Microsoft TechDays 2011 - La sélection de ZeCloud
Comme les webcasts des sessions des TechDays 2011 commencent à être disponibles, ZeCloud nous propos ...
14/03/2011 - SharePoint 2010 : Résolution d’un problème javascript avec ISA Server 2004 SP2
Découvrez comment Julien Chable solutionne un bug Javascript rendant inutilisables la plupart des co ...
(c) 1999-2006 ASP MAGAZINE SARL
Partenaires : Codes sources c2i ASP-PHP
Hébergement serveurs dédiés Windows


Hit-Parade