Extjs obtient tous les enregistrements de magasin
J'ai une question. Est-il possible d'obtenir tous les documents qui sont chargés dans un magasin quand les filtres sont ajoutés à stocker? Par exemple, si je charge dans le magasin 34 enregistrements et ensuite appliquer des filtres et il est à seulement 15 gauche, pourrais-je obtenir ces 34 dossiers sans effacer les filtres?
source d'informationauteur kuldarim
Vous devez vous connecter pour publier un commentaire.
Edit: C'était à l'origine de réponse pour Ext 4.2, où
snapshot
était public et documenté. Il est parti aujourd'hui. Voici donc une mise à jour pour Ext 5 et 6.Ext 5 /6
Un liner:
De décomposition:
Magasin#getData
vous donne le magasin de la collection.Collection#getSource
vous donne du magasin "source", c'est non filtré de la collection, mais seulement si la collection a déjà été filtré, sinon elle renvoienull
.Dans les deux cas, vous obtiendrez un
Ext.util.Collection
. UtilisationgetRange
pour obtenir un véritable tableau d'éléments.Ext 5
getUnfiltered
méthodeUn
getUnfiltered
méthode a été introduite à un certain point dans Ext 5 (5.0.1 pour autant que je peux dire, mais les docs pour Ext 5 sont hors ligne pour le moment...). Il n'était pas présent dans les premières versions de la Poste 5, et c'était parti par la Poste 6. Alors, eh bien... Ne l'utilisez pas! Sauf si vous voulez attacher votre code à 5 Ext sans aucune raison, utilisez la méthode ci-dessus.Ext 4
(réponse originale à cette question)
L'ensemble du chargement de données est stockée dans le
instantané
propriété de la boutique.Il n'est créé que lorsque nécessaire. Cela signifie que la propriété ne sera pas disponible avant quelques filtres ont été appliqués à la boutique. Donc, pour obtenir l'information que vous voulez en toute sécurité, utilisez:
Ext 4 /5 /6
(et probablement les versions futures)
Vous pouvez utiliser
requête
ouqueryBy
.Ce qui semble être la plus compatible approche, car, contrairement aux méthodes précédentes, cette API n'a pas changé entre les versions.
Malheureusement, que la traversée de la collecte et subit un traitement supplémentaire des coûts... ce Qui peut ou peut ne pas être négligeable en fonction de la taille de votre collection.
Peut-être plus en avant approche compatible (c'est à dire ExtJS version >= 5) est la suivante:
Basé sur la documentaion, cela devrait fonctionner pour les versions >= 5.0.
Pour obtenir toutes les données non filtrées à partir d'un chargé magasin, vous pouvez essayer
var dossiers = magasin.getUnfiltered();
Note: je suis à l'aide de Ext Js 5.1. Pas sûr au sujet des versions antérieures.
Si vous souhaitez recevoir des enregistrements à partir de l'adresse http de la réponse seulement -, voici ma solution:
Ajouter le
getRawRecords
fonction destore
classe:Utilisation:
Dans la Dernière Extjs 6.2.0 vous pouvez utiliser