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);
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