контекстное меню панели дерева extjs не работает - PullRequest
10 голосов
/ 17 октября 2011
var menu1 = new Ext.menu.Menu({
    items: [{
        text: 'Open in new tab'

    }]
});
var treePanel = Ext.create('Ext.tree.Panel', {
    id: 'tree-panel',
    region: 'center',
    useArrows: true,
    singleExpand: true,
    split: false,
    height: 360,
    minSize: 150,
    rootVisible: false,
    autoScroll: true,
    store: store,
    border: false,
    columns: [{
        xtype: 'treecolumn',
        dataIndex: 'text',
        flex: 2,
        sortable: true,
        displayField: true
    }]

});
treePanel.on('contextmenu', function(event, node) {
    alert(node)
    //treePanelCurrentNode = node;
    x = event.browserEvent.clientX;
    y = event.browserEvent.clientY;
    menu1.showAt([x, y]);
}, this);

Работа на 4.1 ext js и попытка добавить контекстное меню на эту панель дерева, но меню не работает.В магазине панели дерева идет, но мой код

treePanel.on('contextmenu', function(event,node){};

не работает, не событие

treePanel.on('click', function(event,node){};

Есть идеи, связанные с контекстным меню ext js на панели дерева?

Ответы [ 2 ]

20 голосов
/ 17 октября 2011

В дереве нет события contextmenu в ExtJS4.

Вы должны использовать itemcontextmenu вместо contextmenu:

treePanel.on('itemcontextmenu', function(view, record, item, index, event) {
    alert(record)
    //treePanelCurrentNode = record;
    menu1.showAt(event.getXY());
    event.stopEvent();
}, this);
1 голос
/ 18 октября 2011

Когда представление данных отображается с отключением стандартного меню веб-браузера, вызываемого правой кнопкой мыши, это вызывается в событии «render» слушателей, а событие «itemcontexmenu» предназначено для обнаружения события щелчка правой кнопкой мыши, захвата позиции курсора мыши и отображения меню. .

  listeners: {


        render: function() {
             Ext.getBody().on("contextmenu", Ext.emptyFn, null, {preventDefault: true});
        },
        itemcontextmenu : function( grid, record, item, index, event){
            x = event.browserEvent.clientX;
            y = event.browserEvent.clientY;

            menu1.showAt([x, y]);


        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...