Est-il possible de conserver le tri/filtrage/sélection de la grille sur grid.refresh() d'une manière optimisée et intelligente? J'ai besoin de rafraîchir la grille sur l'événement de redimensionnement de la fenêtre pour ajuster à une nouvelle taille de fenêtre. Je suppose que le rafraîchissement détruit et recrée en interne la grille, sans tenir compte du tri/filtre/sélection actif possible. Parce que la grille peut contenir beaucoup de données (défilement virtuel), je voudrais éviter les requêtes, le rendu et le tri inutiles. Je suppose que je suis à la recherche d'une actualisation qui actualisera les données existantes.shieldUI Filtre de grille/tri de la persistance sur l'actualisation de la grille
Répondre
J'ai trouvé la solution dans la méthode refresh elle-même. Il accepte les objets d'options dans lesquels il est possible de conserver les options de source de données actuelles. Exemple pour persister trier et/ou filtrer:
var options = {
dataSource: $("#grid").swidget().dataSource
}
$("#grid").swidget().refresh(options);
Veuillez me corriger si je me trompe ici. Pour les sélections, je suppose que l'on peut récupérer les index sélectionnés et resélectionner après avoir appelé l'actualisation.
EDIT: le filtre et le tri sont conservés, mais les lignes de filtrage sont réinitialisées (toutes les valeurs d'entrée actives sont perdues). Serait-ce un bug? Comment conserver les valeurs dans la ligne de filtre?
Coutures comme ils viennent de l'implémenter - voici le example.
Peut être inclus dans la prochaine version.
Voici le code dans l'exemple qui fait cela:
jQuery(function ($) {
$("#grid").shieldGrid({
dataSource: {
data: gridData,
schema: {
fields: {
id: { type: Number },
name: { type: String },
company: { type: String },
phone: { type: String },
age: { type: Number },
gender: { type: String }
}
},
filter: {
// create the initial filter in that form
and: [
{ path: "name", filter: "con", value: "John" }
]
}
},
filtering: {
enabled: true
},
paging: true,
columns: [
{ field: "id", width: "250px", title: "ID" },
{ field: "name", title: "Person Name", width: "250px" },
{ field: "company", title: "Company" },
{ field: "phone", title: "Phone", width: "250px" },
{ field: "age", title: "Age" }
]
});
});
s'il vous plaît postez votre réponse en utilisant cet exemple. – Sachith