2016-12-01 1 views
1

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

0

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?

1

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" } 
     ] 
    }); 
}); 
+0

s'il vous plaît postez votre réponse en utilisant cet exemple. – Sachith