extjs中的hidden true需要具有与hide column相同的功能

extjs中的hidden true需要具有与hide column相同的功能,extjs,Extjs,我已经覆盖了extjs的隐藏列功能,该功能运行良好。当列被指定为hidden:true时,在第一次页面加载期间,我的隐藏功能不起作用。当我隐藏/显示列时,它正在工作。在页面加载期间也需要启用相同的功能 columnhide: function() { var cell = this.getEl().query('.x-grid-cell-inner'); var collen = grid.columns.length; var i = 1; for (var y

我已经覆盖了extjs的隐藏列功能,该功能运行良好。当列被指定为hidden:true时,在第一次页面加载期间,我的隐藏功能不起作用。当我隐藏/显示列时,它正在工作。在页面加载期间也需要启用相同的功能

columnhide: function() {
    var cell = this.getEl().query('.x-grid-cell-inner');
    var collen = grid.columns.length;
    var i = 1;
    for (var y = i; y < cell.length; y = y + collen) {
        for (var x = 0; x < cell.length; x++) {
            if (x == y) {
                cell[x].style.display= "none"; 
            }
        }
    }
} 
columnhide:function(){
var cell=this.getEl().query('.x-grid-cell-inner');
var collen=grid.columns.length;
var i=1;
对于(变量y=i;y
你说得对,
columnhide
事件仅在列渲染后被隐藏时才会触发

使当前代码正常工作的最简单方法是在列上调用
hide()
,而不是使用
hidden
选项

在列配置中用以下内容替换
hidden:true
,即可实现此目的:

    ,listeners: {
        // we want to catch the event only the first time it is fired
        single: true
        ,afterrender: function() {
            this.hide();
        }
    }

此代码将向要隐藏的列添加一个侦听器,在呈现该列后,它将调用其
hide()
方法。这将触发您的活动等。

欢迎使用SO。请格式化文本,使其可读。要使代码正确显示,您需要将其缩进4个空格(或使用工具栏中的按钮)。我已经编辑了你的帖子,向你展示了它应该给你的东西。谢谢。。但它是空白的。请检查这里。这个.hide()隐藏的是整个网格而不是列我想你已经发现了,但是你必须将侦听器放在列配置中,而不是网格的配置中。你能更改我的js FIDLE代码吗。。我试过了,但没用。。。感谢您的帮助事实上,整个网格并不隐藏,但在创建过程中会崩溃。控制台中出现明显错误:“无法读取未定义的”属性“列”
renderTo
使网格立即渲染,然后调用
afterrender
侦听器,然后调用
this.hide()
,然后调用
columnhide
侦听器。。。在
Ext.create
返回之前的所有内容,因此在
列隐藏
侦听器中,
网格
尚未定义。棘手的一种解决方案是在创建网格后显式渲染网格,而不是使用
renderTo
。见: