ExtJS 4 aktivieren dynamisch einen ActionColumn -Element
Frage
Mit 4.0.6 habe ich ein Gridpanel mit einem ActionColumn mit zwei Elementen, einer Schaltfläche Löschen und Ansicht. Die Schaltfläche Löschen ist deaktiviert, aber es gibt einige Umstände, unter denen sie aktiviert werden müssen (wenn ein Benutzer ein Administrator ist). Also versuche ich es im Code zu aktivieren.
Hier ist die Ansicht:
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);
}
});
und die Controller -Funktion, die ich verwende, um zu aktivieren:
enableDel: function () {
var view = Ext.widget('personlist');
view.down('actioncolumn').enableAction(0);
}
Aber ich erhalte einen Fehler in der Funktion der EXTJS -EnableAction -Funktion in der Startlinie
me.up('tablepanel').el.select
Das El ist undefiniert. Die Spalte wird auch nicht aktiviert. Kann mir jemand sagen, was ich falsch mache oder ein Beispiel posten, das funktioniert? Wenn ich angeben
renderTo: Ext.getBody()
In der Ansicht erhalte ich den Fehler nicht mehr, aber die Spalte ermöglicht es immer noch nicht. Ich denke, es muss etwas mit dem Rendern zu tun haben, aber ich bin so neu, dass ich keine Ahnung habe, wo ich anfangen soll.
Lösung
Im Allgemeinen, wenn EL undefiniert ist, bedeutet dies, dass Sie versuchen, darauf zuzugreifen, bevor die Komponente gerendert wird. Wann macht dein enableDel
Funktion werden aufgerufen? Vielleicht möchten Sie versuchen, es in eine zu setzen afterrender
Hörer.