Я использую контекстное меню в своей сетке ExtJS. Все идет правильно. Моя проблема в том, что когда я использую правый клик, появляется меню. Опять же, когда я изменяю строку сетки, контекстное меню не исчезает.ContextMenu не исчезает из ExtJs Grid
Мой код
Ext.application({
name: 'Fiddle',
launch: function() {
var grid = Ext.create('Ext.grid.Panel', {
renderTo: Ext.getBody(),
width: 400,
height: 500,
title: 'itemcontextmenu',
store: {
fields: ['name', 'email', 'phone'],
data: [
{
'name': 'Lisa',
"email": "[email protected]",
"phone": "555-111-1224"
},
{
'name': 'Bart',
"email": "[email protected]",
"phone": "555-222-1234"
},
{
'name': 'Homer',
"email": "[email protected]",
"phone": "555-222-1244"
},
{
'name': 'Marge',
"email": "[email protected]",
"phone": ""
}
]
},
columns: [
{
text: 'Name',
dataIndex: 'name',
flex: 1
}
],
listeners:[
{
rowclick: function(a , record , element , rowIndex , e , eOpts) {
debugger;
if (rowIndex == 1)
{
alert("Hello");
}
else if (rowIndex == 2)
{
alert("Maddy");
}
}
}
]
});
var contextMenu = Ext.create('Ext.menu.Menu', {
width: 200,
items: [
{
text: 'Preview',
handler: function() {
var record = grid ? grid.getSelection()[0] : null;
if (!record)
{
return;
}
alert(record.get('name'));
}
}
]
});
grid.on("itemcontextmenu", function(grid, record, item, index, e) {
e.stopEvent();
contextMenu.showAt(e.getXY());
});
}
});
Может кто-нибудь, пожалуйста, объясните мне, почему это происходит? Мой рабочий скрипку here
Шаги для воспроизведения:
- Щелкните правой кнопкой мыши на строке одного, вы получите предварительный просмотр в меню
- Теперь нажмите на второй строке. В идеале просмотр должен исчезнуть, но этого не происходит.
Спасибо за этот ответ – David