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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top