Extjs 4 динамически включить элемент actioncolumn - PullRequest
0 голосов
/ 19 февраля 2012

Используя 4.0.6, у меня есть сеточная панель с колонкой action, в которой есть два элемента: кнопка удаления и кнопка просмотра. Кнопка удаления отключена, но в некоторых случаях ее необходимо включить (если пользователь является администратором). Поэтому я пытаюсь включить его в коде.

Вот вид:

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

но я получаю сообщение об ошибке в функции enableAction extjs в строке, которая начинается

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

эль не определена. Столбец тоже не включается. Может кто-нибудь сказать мне, что я делаю неправильно или опубликовать пример, который работает? Если я укажу

renderTo: Ext.getBody()

в представлении я больше не получаю сообщение об ошибке, но столбец по-прежнему не включается. Поэтому я думаю, что это как-то связано с рендерингом, но я настолько новичок в этом, что понятия не имею, с чего начать.

1 Ответ

1 голос
/ 20 февраля 2012

Как правило, когда el не определено, это означает, что вы пытаетесь получить к нему доступ до визуализации компонента.Когда вызывается ваша enableDel функция?Возможно, вы захотите попробовать поместить его в afterrender слушателя.

...