Utilisation de DataPager sans récupérer toutes les lignes de chaque requête

StackOverflow https://stackoverflow.com/questions/429707

  •  06-07-2019
  •  | 
  •  

Question

J'ai un ListView que je lie de données à une collection d'objets du genre:

int total;
List<Client> clientList = 
    clientData.GetClients(criteria, pageNum, pageSize, out total);
uxClientList.DataSource = clientList;
uxClientList.DataBind();

Les paramètres pageNum, pageSize et total facilitent la pagination au niveau de la couche d'accès aux données. Jusqu'ici tout va bien.

Maintenant, je peux lancer un DataPager sur la page, le diriger vers le ListView et obtenir un UX de pagination décent. Il y a un peu plus que cela quand vous liez par programme plutôt que de manière déclarative avec un contrôle de source de données , mais le problème ici est que DataPager s'attend à ce que le jeu de résultats entier soit extrait à chaque fois, à partir duquel il doit calculer. la pagination, de sorte que la page unique de résultats renvoyée correspond au nombre total d'enregistrements disponibles et restituée comme s'il n'y avait qu'une seule page de résultats disponible. En d'autres termes, le scénario ci-dessus fonctionne correctement avec DataPager si nous passons à une version de GetClients non destinée à la pagination:

List<Client> clientList = clientData.GetClients(criteria);
uxClientList.DataSource = clientList;
uxClientList.DataBind();

Évidemment, comme notre couche d’accès aux données est assez gentille pour nous fournir une méthode pour récupérer une page à la fois, il serait préférable de récupérer tous les enregistrements à chaque fois. Ce serait bien si nous pouvions informer explicitement DataPager du nombre total d'enregistrements disponibles afin qu'il puisse toujours créer automatiquement une sortie de pagination, mais n'exige qu'une page à la fois.

Je n'ai pas trouvé de moyen facile de faire cela et je n'ai rien trouvé dans les recherches. Certes, je ne dispose pas actuellement d'une compréhension approfondie de la mise en œuvre de DataPager. J'espère donc que je néglige quelque chose.

Était-ce utile?

La solution

Vous n'avez rien oublié.

Lorsque vous utilisez des ensembles de résultats volumineux, vous devez désactiver la pagination et ajouter vos propres contrôles de pagination.

D'après mon expérience < < < > > > suffire. De toute façon, personne ne dépasse la 3ème page.

Autres conseils

Consultez ListViewPagedDataSource et son AllowServerPaging , je pense que peut être ce que vous cherchez ..

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top