0

使用 4.0.6 我有一个带有 actioncolumn 的网格面板,它有两个项目,一个删除按钮和一个查看按钮。删除按钮被禁用,但在某些情况下需要启用它(如果用户是管理员)。所以我试图在代码中启用它。

这是视图:

Ext.define('PP.view.person.List', {
extend: 'Ext.grid.Panel',
alias: 'widget.personlist', 
title: 'Current people',
store: 'People',
columnLines: true,

initComponent: function () {
    this.columns = [
        { header: 'Id', dataIndex: 'personId', flex: 1, sortable: true },
        { header: 'Title', dataIndex: 'title', flex: 1 },
        { header: 'Name', dataIndex: 'name', flex: 1},
        { xtype:'actioncolumn',
            items:[
                {icon:'cross.gif',disabled:true,handler:function(){alert('delete pressed');}},
                {icon:'tick.gif',handler:function(){alert('view pressed');}}
            ]
        }
    ];

    this.callParent(arguments);
}

});

以及我用来启用的控制器功能:

enableDel: function () {
    var view = Ext.widget('personlist');
    view.down('actioncolumn').enableAction(0);
}

但我在开始的行的 extjs enableAction 函数中出现错误

me.up('tablepanel').el.select

el 未定义。该列也没有启用。谁能告诉我我做错了什么或发布一个有效的例子?如果我指定

renderTo: Ext.getBody()

在视图中我不再收到错误,但该列仍然无法启用。所以我认为这一定与渲染有关,但我对此很陌生,我不知道从哪里开始。

4

1 回答 1

1

通常,当 el 未定义时,这意味着您正在尝试在组件呈现之前访问它。你的enableDel函数什么时候被调用?您可能想尝试将其放入afterrender侦听器中。

于 2012-02-20T05:45:17.617 回答