2010-11-09 3 views
1

Dans ma page asp.net, j'ai un listview qui a un datapager défini dans le LayoutTemplate. Le listview est databound à une liste d'enregistrements. Je connais le nombre total d'enregistrements ... mais je ne les charge pas depuis le db. Je veux dire au pager à la première demande le nombre total d'enregistrements et le laisser générer les pages et la navigation. Lorsque l'utilisateur clique sur une page du datapager, je souhaite charger les enregistrements à partir de la base de données et mettre à jour la liaison listview pour afficher les résultats de cette page. Est-ce possible avec le listview et le datapager d'asp.net?Asp.net pagination listview sans avoir tous les enregistrements en mémoire

Merci, Radu

Répondre

0

Après plus de recherches, j'ai trouvé cet article qui décrit comment mettre en cache des données et l'utiliser avec ObjectDataSource. Probablement vous savez tout cela ... mais je suis nouveau avec asp.net.

Caching data in Asp.net

0

Il est impossible en utilisant seulement ces contrôles. Cependant, vous pouvez écrire du code personnalisé dans les gestionnaires d'événements de ces contrôles pour faire ce que vous voulez. D'après mon expérience, la meilleure façon de le faire est d'utiliser un proc stocké sur le côté db qui prend un paramètre startIndex et un paramètre pageSize et renvoie uniquement les résultats que vous voulez. (Bien sûr, les paramètres peuvent être différents de ce que j'ai écrit, mais vous avez l'idée)

2

Vous pouvez gérer le pager séparément de la liste. La méthode SetPageProperties de DataPager vous sera utile ici. Ensuite, vous pouvez définir la source de données de votre listview sur la «page» appropriée des enregistrements de base de données pendant OnDataBinding ou Page_Prerender (en fonction de la manière dont vous souhaitez traiter les événements de publication).

Questions connexes