Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs Ext JS 4:将Ext.grid.Panel中的所有列显示为自定义选项_Extjs_Grid_Show_Multiple Columns - Fatal编程技术网

Extjs Ext JS 4:将Ext.grid.Panel中的所有列显示为自定义选项

Extjs Ext JS 4:将Ext.grid.Panel中的所有列显示为自定义选项,extjs,grid,show,multiple-columns,Extjs,Grid,Show,Multiple Columns,是否有一个函数可以在ExtJS中的Ext.grid.Panel上调用,如果默认情况下某些列是隐藏的,那么该函数将使所有列都可见?当最终用户需要显示隐藏列时,他们需要单击每个列。下面,我有一些代码,可以在选择字段标题时添加自定义菜单选项。我想执行这个函数,以便所有列都显示出来 作为下面的一个示例,我默认隐藏了“项目ID”和“用户创建的”。选择“选择所有列”将打开这些列,因此它们将显示在列表视图中 listeners: { ...

是否有一个函数可以在ExtJS中的Ext.grid.Panel上调用,如果默认情况下某些列是隐藏的,那么该函数将使所有列都可见?当最终用户需要显示隐藏列时,他们需要单击每个列。下面,我有一些代码,可以在选择字段标题时添加自定义菜单选项。我想执行这个函数,以便所有列都显示出来

作为下面的一个示例,我默认隐藏了“项目ID”和“用户创建的”。选择“选择所有列”将打开这些列,因此它们将显示在列表视图中

        listeners: {

            ... 

            },
            afterrender: function() {
                var menu = this.headerCt.getMenu();
                menu.add([{
                    text: 'Select All Columns',
                    handler: function() {
                        var columnDataIndex = menu.activeHeader.dataIndex;
                        alert('custom item for column "'+columnDataIndex+'" was pressed');
                    }
                }]);           
            }
        }
    });
===========================

用密码回答: 下面是我根据Eric的代码决定做的,因为隐藏所有列是愚蠢的

            afterrender: function () {
                var menu = this.headerCt.getMenu();
                menu.add([{
                    text: 'Show All Columns',
                    handler: function () {
                        var columnDataIndex = menu.activeHeader.dataIndex;
                        Ext.each(grid.headerCt.getGridColumns(), function (column) {
                            column.show();
                        });
                    }
                }]);
                menu.add([{
                    text: 'Hide All Columns Except This',
                    handler: function () {
                        var columnDataIndex = menu.activeHeader.dataIndex;
                        alert(columnDataIndex);
                        Ext.each(grid.headerCt.getGridColumns(), function (column) {
                            if (column.dataIndex != columnDataIndex) {
                                column.hide();
                            }
                        });
                    }
                }]);
            }

如果您不需要任何特殊的逻辑,可以尝试以下方法:

Ext.each(grid.headerCt.getGridColumns(), function(column){
    column.show();
});

如果您不需要任何特殊的逻辑,可以尝试以下方法:

Ext.each(grid.headerCt.getGridColumns(), function(column){
    column.show();
});

我也必须这样做,起初我试图实现一个解决方案,就像Eric的一样,但它在速度较慢的计算机上产生了严重的滞后问题。显示每列后,它会在网格上进行完整的组件布局

我通过以下方式规避了这一点:

grid.suspendLayout = true;
Ext.each(grid.headerCt.getGridColumns(), function(column) {
    column.show();
});
grid.suspendLayout = false;
grid.doComponentLayout();

我也必须这样做,起初我试图实现一个解决方案,就像Eric的一样,但它在速度较慢的计算机上产生了严重的滞后问题。显示每列后,它会在网格上进行完整的组件布局

我通过以下方式规避了这一点:

grid.suspendLayout = true;
Ext.each(grid.headerCt.getGridColumns(), function(column) {
    column.show();
});
grid.suspendLayout = false;
grid.doComponentLayout();