2011-07-15 2 views
1

Existe-t-il un plugin pour la grille ExtJS qui masque automatiquement les colonnes "vides"?Masquer automatiquement les colonnes "vides" dans la grille ExtJS Panneau

Une colonne doit être considérée comme "vide" si la valeur du champ mappé pour tous les enregistrements du magasin sous-jacent correspond à un critère de "vide" donné (une valeur donnée ou, mieux, une fonction).

Les opérations d'ajout/retrait/mise à jour à l'exécution sur le magasin sous-jacent doivent masquer/masquer les colonnes en conséquence.

Merci!

Répondre

1

Je devais faire quelque chose de similaire à ceci ... voici un "modèle de colonne qui cache" qui cachera/montrera des colonnes basées sur la valeur de retour de la méthode "fieldHasData" ... c'est probablement un début proche de ce que vous demandiez

Ext.ux.grid.HidingColumnModel = function() { 

    var Class = Ext.extend(Ext.grid.ColumnModel, {   
     constructor:function(config) { 
      Class.superclass.constructor.call(this, config); 
     }, 

     onGridStoreLoad:function(store, records, options) { 
      store.fields.each(function(item, index, length) { 
       var colIndex = this.findColumnIndex(item.name); 
       if (colIndex >= 0) { 
        this.setHidden(colIndex, !this.fieldHasData(item.name, records)); 
       } 
      }, this); 
     }, 

     fieldHasData:function(field, records) { 
      var hasData = false; 
      Ext.each(Ext.pluck(records, "data"), function(item, index, allItems) { 
       if (item[field]) { 
        hasData = true; 
       } 
      }); 
      return hasData; 
     } 
    }); 

    return Class; 
}(); 

Et puis dans votre grille ... ne pas ajouter l'auditeur sur le modèle de la colonne

var columnModel = new Ext.ux.grid.HidingColumnModel(), 
    store = ... {create your store}, 
    gridPanel = new Ext.grid.GridPanel({ 
     ... 
     store:store, 
     columnModel:columnModel, 
     ... 
    }); 

store.on('load', columnModel.onGridStoreLoad, columnModel); 
+0

Merci pour votre réponse :) Je finalement mis en œuvre moi-même plug-in car je devais cacher d'exécution/montrer et moi avions besoin pour être rapide avec des milliers de lignes – Sergio

Questions connexes