Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

[ASP.NET] Réaliser une pagination avec un objet DataList

Un des soucis lors de l’utilisation d’un Datalist demeure la pagination. En effet, le contrôle ne nous offre pas un événement de pagination comme c’est le cas pour un Gridview par exemple. Cependant, la solution existe. On peut désormais appliquer une pagination sur un Datalist et ceci en utilisant la classe PagedDataSource. On détaillera dans ce que suit comment procéder.

Voici un exemple d’un Datalist  qui prend comme source une liste contenant des URLs des images:

<asp:DataList runat="server" id="dlGallery" RepeatColumns="4" RepeatDirection="Horizontal"> 
    <ItemTemplate>
        <img src="<%# Eval(Container.DataItem)%>" width="90" height="90">
    </ItemTemplate>
</asp:DataList>

On déclare une variable statique (Si on a un contexte web, on utilise un ViewState pour palier au problème d' utilisation multiple de la variable) :

private static int CurrentPage = 0;

Dans le code Behind de la page, au niveau de la fonction qui remplit la Datalist :

BinderDataList(){
    List<String> olstUrls = DictionnaryHelper.GetUrls();

    //Déclaration de l’objet de la pagination et mettre à vrai la pagination
    PagedDataSource objPage = new PagedDataSource();
    objPage.AllowPaging = true;

   //assigner la source de données à l’objet
    objPage.DataSource = olstUrls;

    //Spécifier le nombre de page pour la pagination
    objPage.PageSize = 8;

    //"CurrentPage" est une variable statique indiquant la page courante de la pagination
    objPage.CurrentPageIndex = CurrentPage;

    //lbtnNext et lbtnPrev sont deux boutons pour le "Suivant" et "Précédent" sur les éléments
    lbtnNext.Enabled = !objPage.IsLastPage;
    lbtnPrev.Enabled = !objPage.IsFirstPage;

   //Assigner l’objet à la List
    dlGallery.DataSource = objPage;
    dlGallery.DataBind();
}

On spécifie après les événements des deux objets "Linkbutton" qui serviront pour naviguer entre les éléments de la liste:

private void lbtnPrev_Click(object sender, System.EventArgs e){
    CurrentPage -=1;
    BinderDataList();
}

private void lbtnNext_Click(object sender, System.EventArgs e){
    CurrentPage +=1;
    BinderDataList();
}

Et voila , on place les deux LinkButtons dans notre page et ainsi nous obtenons une pagination sur notre Datalist. On peut bien sur améliorer tout ça pour obtenir un pager du style |< < ... 4 5 6 7 8 ... > >|

PS: Merci à O. Nouiri pour cette astuce.

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: vendredi 30 mai 2008 14:35 par Guillaume Brout

Commentaires

jeDebuuute a dit :

Salut,

Je voudrais bien essayer votre solution pour une pagination dans "datalist", seulement ça parle de "classe PagedDataSource" que je ne vois nulle nulle part !!

Peut-on avoir son code pour test !!

Aussi, vous disiez "Si on a un contexte web, on utilise un ViewState pour palier au problème d' utilisation multiple de la variable" !

C'est justement le cas ! je suis dans "contexte web" et je comprends pas bien cette histoire de 'ViewState' : jamais utilisé ! Mais si ça a un rapport avec les variables de session, ça je connais !

Merci à vous !

# mai 31, 2008 10:26
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Silverlight] En attendant Silverlight 2 RTW par Blog Technique d'Audrey PETIT le il y a 21 heures et 9 minutes

- Le nouveau Gojira, c’est pour lundi… par CoqBlog le 10-11-2008, 01:18

- SharePoint : nouvel article sur la mise en place des Scopes dans MOSS Searchs par Blog Technique de Romelard Fabrice le 10-10-2008, 17:52

- Hello CS par Le Blog de julz le 10-10-2008, 12:26

- MSDN/TechNet/Microsoft Days Tour 2008 à Lille les 13 et 14 Octobre ! par RedoBlog - The .NET Gentleman !!! le 10-10-2008, 09:35

- MVC Pratique #07 - Un projet concret et le transfert des objets avec les ModelBinders par #Rui le 10-09-2008, 23:39

- SQL Server 2008 : Certifié - TS Admin (70-432) par SQL Server vu par Christian Robert le 10-09-2008, 10:58

- [WPF] Comment changer la couleur utilisée pour sélectionner les éléments d’un ItemsControl ? par Thomas Lebrun le 10-09-2008, 10:49

- Hello World! par Hamid's Place le 10-08-2008, 23:38

- SQL Profiler - Configuration pour un développeur - tracer les requêtes SQL de votre application par Atteint de JavaScriptite Aiguë [Cyril Durand] le 10-08-2008, 15:52