Grid 自动隐藏";“空的”;ExtJS网格面板中的列

Grid 自动隐藏";“空的”;ExtJS网格面板中的列,grid,hide,show,extjs,Grid,Hide,Show,Extjs,ExtJS网格是否有自动隐藏“空”列的插件 如果基础存储中所有记录的映射字段的值与给定的“空”条件(给定值或更好的函数)匹配,则列应被视为“空” 基础存储上的运行时添加/删除/更新操作应相应地隐藏/取消隐藏列 谢谢 我不得不做类似的事情。。。这是一个“隐藏列模型”,它将根据“fieldHasData”方法的返回值隐藏/显示列。。。这可能是一个接近你要求的开始 Ext.ux.grid.HidingColumnModel = function() { var Class = Ext.ext

ExtJS网格是否有自动隐藏“空”列的插件

如果基础存储中所有记录的映射字段的值与给定的“空”条件(给定值或更好的函数)匹配,则列应被视为“空”

基础存储上的运行时添加/删除/更新操作应相应地隐藏/取消隐藏列


谢谢

我不得不做类似的事情。。。这是一个“隐藏列模型”,它将根据“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);

我不得不做类似的事情。。。这是一个“隐藏列模型”,它将根据“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);

因为我在任何地方都找不到类似的插件,所以我只是自己实现了它:)

代码位于以下extjs/sencha论坛:


由于我在任何地方都找不到类似的插件,我只是自己实现了它:)

代码位于以下extjs/sencha论坛:

谢谢你的回答:)我最终自己实现了插件,因为我需要运行时隐藏/显示,我需要它能够快速处理数千行。谢谢你的回答:)我最终自己实现了插件,因为我需要运行时隐藏/显示,我需要它能够快速处理数千行。