2010-11-15 6 views
0

Je suis en train de coder une page de rapport. Dans cette page, il y a deux champs de date pour que l'utilisateur filtre la date et le GridView est rempli en fonction de ces dates dans le CodeBehind (lorsque l'utilisateur clique sur la vue du bouton). Maintenant, je veux implémenter une fonctionnalité de pagination/tri pour ce GridView. J'ai recherché et je vois qu'il y a une pagination par défaut pour GridView qui n'est pas très efficace (ma table de rapport peut avoir des milliers d'enregistrements) et une pagination personnalisée mais cela nécessite d'utiliser ObjectDataSource (que je n'utilise pas). Ainsi, n'importe qui peut me recommander certaines approches qui sont les mieux utilisées dans cette situation? Quelques tutoriels seront appréciés avec plaisir :)Paging/tri personnalisé pour GridView rempli par CodeBehind Datasource?

Merci,

Répondre

1

En supposant que vous avez les enregistrements stockés dans une base de données, je recevrais le nombre d'enregistrements et utiliser ce numéro pour la pagination. Ensuite, je demanderais ceux que je veux voir sur chaque page.

string.Format(@" 
    SELECT TOP {0} * FROM Records WHERE pkId NOT IN (
     SELECT TOP {1} pkId FROM Records ORDER BY pkId 
    ) ORDER BY pkId;", 
    upperBoundary, 
    lowerBoundary 
); 

upperBoundary serait lowerBoundary + itemsPerPage, par exemple. En utilisant MSSQL, nous n'avons pas le luxe de la fonction LIMIT de MySQL, mais cela fait la même chose.

Rétrécissement des dates, serait quelque chose comme

SELECT * FROM Records WHERE Date > earlyDate AND Date <= lateDate 

Ceci est la façon la plus effecient dans mon oppinion, car il provoque peu de trafic et si vous mettez en cache le nombre d'enregistrements, vous n'aurez pas beaucoup de questions voler autour non plus.

+0

À partir de 2005, vous pouvez utiliser row_number pour sélectionner un sous-ensemble plutôt que d'exécuter plusieurs instructions select. – Moo

+0

Après quelques recherches, je n'ai pas réussi à trouver un exemple utilisant row_number() pour faire une requête aussi simple ou plus simple. Les exemples semblent plus précis, mais les requêtes semblent plus complexes. – Heki

Questions connexes