EXTJS 4 Abilita dinamicamente un elemento ActionColumn
Domanda
Usando 4.0.6 Ho un GridPanel con un actionColumn che ha due elementi, un pulsante Elimina e e visualizza il pulsante. Il pulsante Elimina è disabilitato ma ci sono alcune circostanze in cui deve essere abilitato (se un utente è un amministratore). Quindi sto cercando di abilitarlo nel codice.
Ecco la vista:
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);
}
});
e la funzione del controller che sto usando per abilitare:
enableDel: function () {
var view = Ext.widget('personlist');
view.down('actioncolumn').enableAction(0);
}
Ma sto ricevendo un errore all'interno della funzione di abilitazione EXTJS sulla linea che inizia
me.up('tablepanel').el.select
L'EL è indefinito. Anche la colonna non viene abilitata. Qualcuno può dirmi cosa sto facendo di sbagliato o pubblicare un esempio che funziona? Se specifico
renderTo: Ext.getBody()
Nella vista non ricevo più l'errore ma la colonna non abilita ancora. Quindi penso che debba avere qualcosa a che fare con il rendering, ma sono così nuovo in questo non ho idea di dove cominciare.
Soluzione
Generalmente quando EL non è definito significa che si sta tentando di accedervi prima che il componente venga reso. Quando fa il tuo enableDel
la funzione si chiama? Potresti voler provare a metterlo in un afterrender
ascoltatore.