Accueil   |   Forums   |  Offres d'emplois   |  Contact    |   Mon compte   
jeudi 21 août 2008 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 



ASP Serveur - L'hébergement ASP.NET


A RETENIR CETTE SEMAINE
16/07/2008 - Windows Server 2008 : Network Access Protection
Le nouveau système d’exploitation serveur de Microsoft, Windows Server 2008, apporte avec lui de nou ...
16/07/2008 - Webcasts - Développement parallèle, à l'aube d'une nouvelle ère
Avec l'avénement des multi-coeurs, le développement parallèle devient une necéssité. Dans cette séri ...
16/07/2008 - J'en ai rien à coder - Votre devoir de vacances sur Silverlight !
Qu'est-ce que Silverlight ? Une nouvelle technologie Web permettant d'exécuter des RIA sur un large ...
16/07/2008 - Quelques petits tests sur les bases embarquées
Dans ce billet, Ayende réalise un benchmarking de plusieurs "petites" bases de données embarquées. S ...
15/07/2008 - Présentation d'ASP.NET Dynamic Data
Dynamic Data est une nouvelle technologie inclue dans l' "Asp.net 3.5 Extension CTP ". Elle fournit ...
15/07/2008 - Silverlight 2 - Les webcasts de l'événement sont en ligne
L’objectif de cette journée était de comprendre les limitations de Silverlight 1, et d’appréhender l ...
15/07/2008 - Cache transparent et Entity Framework
La gestion du cache (1er et second niveau) est une fonctionnalité très importante d'un outil de mapp ...
(c) 1999-2006 ASP MAGAZINE SARL
Partenaires : Codes sources c2i ASP-PHP
Hébergement serveurs dédiés Windows


Hit-Parade