Я использую ExtJs 3.2.2.Я написал пользовательское контекстное меню для обработки события headerclick сетки.Я получаю ошибку «this.focusEl is undefined error» при нажатии на заголовок.У меня есть ощущение, что это как-то связано с контекстом в контекстном меню, но я озадачен.FF изящно ухудшается и по-прежнему отображает меню, но поведение IE непредсказуемо.
Это событие заголовка сетки:
headerclick: function(grid, columnIndex, e) {
e.stopEvent();
var colModel = grid.getColumnModel();
var col = colModel.getColumnById(colModel.getColumnId(columnIndex))
contextMenu.columnId = col.id;
contextMenu.headerName = col.header;
contextMenu.showAt(e.getXY());
}
Это контекстное меню:
var contextMenu = new Ext.menu.Menu({
items: [{
id: 'sort-high-to-low',
cls: 'xg-hmenu-sort-asc',
text: 'Sort Ascending within Group'
},{
id: 'sort-low-to-high',
cls: 'xg-hmenu-sort-desc',
text: 'Sort Descending within Group'
},'-',{
id: 'sort-high-to-low-all',
cls: 'xg-hmenu-sort-asc',
text: 'Sort All Ascending'
},{
id: 'sort-low-to-high-all',
cls: 'xg-hmenu-sort-desc',
text: 'Sort All Descending'
},'-', {
id: 'heatmap',
cls: 'xg-hmenu-heatmap',
text: 'Open in Heatmap'
}],
listeners: {
scope: this, // not sure if this is correct...
itemclick: function(item) {
switch (item.id) {
case 'sort-high-to-low':
Ext.getCmp('backtestGrid').getStore().sort(contextMenu.columnId,'ASC');
this.hide();
break;
case 'sort-low-to-high':
Ext.getCmp('backtestGrid').getStore().sort(contextMenu.columnId,'DESC');
this.hide();
break;
case 'sort-high-to-low-all':
Ext.getCmp('backtestGrid').getStore().clearGrouping();
Ext.getCmp('backtestGrid').getStore().sort(contextMenu.columnId,'ASC');
this.hide();
break;
case 'sort-low-to-high-all':
Ext.getCmp('backtestGrid').getStore().clearGrouping();
Ext.getCmp('backtestGrid').getStore().sort(contextMenu.columnId,'DESC');
this.hide();
break;
case 'heatmap':
heatmapCallback(contextMenu.headerName, contextMenu.columnId);
this.hide();
break;
}
}
}
});
Второй вопрос, когда я нажимаю на один из пунктов контекстного меню.Я получаю следующую ошибку:
this.fireEvent is not a function
Первый элемент, например, является сортировкой.При нажатии на первый элемент FF выдаст ошибку, но все равно отсортирует сетку.IE не сортирует сетку.
Опять же, я чувствую, что эта ошибка связана с операторами
this.hide();
в каждом из блоков case.Я полагаю, это относится к пункту меню, а не к меню.После нажатия на каждый пункт мне нужно скрыть меню.Однако, даже если я закомментирую операторы this.hide (), ошибка все равно возникает.