Автоматически скрывать «пустые» столбцы в панели сетки ExtJS - PullRequest
1 голос
/ 15 июля 2011

Существует ли плагин для сетки ExtJS, который автоматически скрывает «пустые» столбцы?

Столбец следует считать «пустым», если значение сопоставленного поля для всех записей в базовом хранилище соответствует заданномуКритерии "пустоты" (заданное значение или, что лучше, функция).

Операции добавления / удаления / обновления в базовом хранилище должны соответствующим образом скрывать / отменять скрытие столбцов.

Спасибо!

Ответы [ 2 ]

1 голос
/ 16 июля 2011

Мне пришлось сделать что-то похожее на это ... вот «Скрытая модель столбца», которая будет скрывать / показывать столбцы на основе возвращаемого значения метода «fieldHasData» ... это, вероятно, близкое началоВы спрашивали

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

А затем в вашей сетке ... добавьте слушателя на модель столбца

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 голосов
/ 17 июля 2011

Поскольку я не мог найти подобный плагин где-либо, я просто сам его реализовал:)

Код находится на форумах extjs / sencha здесь:

http://www.sencha.com/forum/showthread.php?140685-Grid-Plugin-dynamically-hiding-columns-matching-quot-emptiness-quot-criteria&p=626670#post626670

...