Je peux créer un menu contextuel pour tree et attacher à l'événement 'contextmenu'. Code:
contextMenu = new Ext.menu.Menu({
items: [{
text: 'Edit',
iconCls: 'edit',
handler: edit
},...]
})
Ext.getCmp('tree-panel').on('contextmenu', function(node) {
contextMenu.show(node.ui.getAnchor());
})
Mais comment puis-je créer un menu contextuel pour les éléments de la grille?
Définissez d'abord votre menu contextuel
mnuContext = new Ext.menu.Menu({
items: [{
id: 'do-something',
text: 'Do something'
}],
listeners: {
itemclick: function(item) {
switch (item.id) {
case 'do-something':
break;
}
}
}
});
Créez ensuite un écouteur pour l'événement souhaité. Il est très important de vous rappeler d'arrêter le comportement par défaut de l'événement pour pouvoir le remplacer par le vôtre. Si vous n'appelez pas la méthode event.stopEvent () pour arrêter l'événement, le menu contextuel par défaut du navigateur apparaîtra quoi que vous fassiez.
rowcontextmenu: function(grid, index, event){
event.stopEvent();
mnuContext.showAt(event.xy);
}
Eh bien, selon ce que vous souhaitez faire, vous pouvez gérer les événements GridPanel
suivants de la même manière que votre exemple: contextmenu , cellcontextmenu , contient contenu du menu contextuel , groupcontextmenu , headercontextmenu , rowbodycontextmenu ou rowcontextmenu .
Pour extjs4, ajoutez ceci dans votre grille:
listeners: {
itemclick: function(view, record, item, index, e, options){
menuContext.showAt(e.xy);
}
}
Avec le même contexte de menu que Alan fourni ci-dessus.
il faut ajouter cette propriété dans votre grille par exemple:
viewConfig: {
stripeRows: true,
listeners: {
itemcontextmenu: function(view, rec, node, index, e) {
e.stopEvent();
contextMenu.showAt(e.getXY());
return false;
}
}
},
Créer un fichier de vue
init : function() {
this.control(
'countrylist' : {
itemcontextmenu : this.contextMenuBox
}
});
},
contextMenuBox:function( view, record, item, index, e, eOpts ){
if(record.data.status=='Y'){
var menu = Ext.create('Ext.menu.Menu',{
items: [{
text: 'Do something'
}]
});
e.stopEvent();
menu.showAt(e.getXY());
}
else{
var menu = Ext.create('Ext.menu.Menu',{
items: [{
text: 'Don\'t'
}]
});
e.stopEvent();
menu.showAt(e.getXY());
}
},