Подтвердить что ты не робот

Как я могу создать контекстное меню для сетки extjs

Я могу создать контекстное меню для дерева и прикрепить к событию contextmenu. Код:

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());
})

Но как я могу создать контекстное меню для элементов сетки?

4b9b3361

Ответ 1

Сначала определите свое контекстное меню

mnuContext = new Ext.menu.Menu({
    items: [{
        id: 'do-something',
        text: 'Do something'
    }],
    listeners: {
        itemclick: function(item) {
            switch (item.id) {
                case 'do-something':
                    break;
            }
        }
    }
});

Затем создайте прослушиватель для желаемого события. Очень важно помнить о том, чтобы остановить поведение события по умолчанию, чтобы вы могли заменить его своим собственным. Если вы не вызываете метод event.stopEvent(), чтобы остановить событие bubbling вперед, тогда контекстное меню по умолчанию для броузера появится независимо от того, что вы делаете.

rowcontextmenu: function(grid, index, event){
     event.stopEvent();
     mnuContext.showAt(event.xy);
}

Ответ 3

Для extjs4 добавьте это в свою сетку:

listeners: {
  itemclick: function(view, record, item, index, e, options){
    menuContext.showAt(e.xy);
  }
}

С тем же контекстом меню, что и Alan, приведенным выше.

Ответ 4

нужно добавить это свойство в свою сетку, например:

viewConfig: {
            stripeRows: true,
            listeners: {
                itemcontextmenu: function(view, rec, node, index, e) {
                    e.stopEvent();
                    contextMenu.showAt(e.getXY());
                    return false;
                }
            }
        },

Ответ 5

  • Создать файл контроллера
  • Создать файл вида

        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());
    
    
            }
    
            },