2016-01-11 1 views
0

Je suis en train de créer une application Angular qui récupère des données avec un schéma similaire provenant de sources multiples. La récupération réelle des données et leur présentation est assez simple. Je compile toutes les demandes dans un tableau, envoie le tableau à $q puis résous les promesses retournant toutes les données.Comment optimiser la pagination et le tri à partir de plusieurs sources dans le mashup JavaScript

Mon problème concerne la pagination et le tri sur serveur. En ce moment je fais juste la taille de la page 5 * nn est simplement le nombre de sources de données. Mais si quelqu'un trie par Created ou quelque chose de similaire, je peux parfois obtenir des résultats inattendus comme une source avec seulement 5 éléments apparaîtront tous sur la première page indépendamment de la date à laquelle ils ont été créés. Donc, la première page pourrait être 20 articles de janvier 2016, puis les 5 derniers articles seront tous à partir de mai 2015. Si j'avance à la page suivante, je m'attendrais à des résultats avant d'entrer dans les entrées de mai 2015 pour les plus grandes sources de données. Ensuite, les éléments de mai de la liste plus petite ne seront pas affichés.

Des idées? Suggestions? Si la réponse à cela est que je suis stupide et que je devrais le faire d'une autre manière, je suis ouvert à cela.

Actuellement, toutes les sources de données sont relativement petites, donc je retourne simplement tous les éléments et fais tout mon paging et mon tri dans l'interface utilisateur. Cela ne sera probablement pas durable dans le futur à mesure qu'ils grandissent. Par souci de clarté, il s'agit du service ListData.svc odata SharePoint 2010. Mais ce n'est pas vraiment une question spécifique à SharePoint.

Répondre

0

Si vous avez des sources de données multiples, il est impossible de faire la pagination avec le tri sans aller chercher toutes les données mises au point où vous page, par exemple

Source 1 
Name 
A 
B 
C 
D 
E 
F 

Source 2 
Name 
P 
Q 
R 
S 
T 
U 

Maintenant, si vous voulez obtenir la deuxième page (taille de 2 * 2) tout triés par nom, le résultat attendu est,

E 
F 
P 
Q 

avec votre approche, vous termine avec

C 
D 
R 
S 

La seule façon que vous pouvez garantir pour obtenir le bon tri est d'aller chercher toutes les données jusqu'à la page vous montrez pour toutes les sources, combinez tous, triez et obtenez la page requise dans votre client.

+0

Merci, c'était exactement ce à quoi je m'attendais. –