ExtJS 7如何在右键单击时选择网格行

qoefvg9y  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(154)

我想在ExtJS 7的现代网格中打开一个上下文菜单,并选择右键单击的行。上下文菜单使用下面的代码。但是,我找不到选择行的方法。grid.getSelectionModel()似乎在ExtJS 7中不再可用。

// Listener in my Ext.app.ViewController manages to update and show context menu but not to select the row.
onContextMenu: function (e) {
        const grid = this.getView();
        const target = e.getTarget(grid.itemSelector);
        if (target) {
            e.stopEvent();
            const item = Ext.getCmp(target.id);
            if (item) {
                // Would like to select row here with something like grid.getSelectionModel().selectRow(rowindex);
                this.updateMenu(item.getRecord(), item.el, e);
            }
        }
    }
zc0qhyus

zc0qhyus1#

看一下下面的小提琴示例(Modern toolkit 7.3.1)

Ext.application({
    name: 'Fiddle',

    launch: function () {
        const menu = new Ext.menu.Menu({
            items: [{
                text: 'Menu Item 1'
            }, {
                text: 'Menu Item 2'
            }]
        });

        Ext.Viewport.add({
            xclass: 'Ext.grid.Grid',
            store: Ext.create('Ext.data.Store', {
                fields: ['name', 'email', 'phone'],
                data: [{
                    name: 'Lisa',
                    email: 'lisa@simpsons.com',
                    phone: '555-111-1224'
                }, {
                    name: 'Bart',
                    email: 'bart@simpsons.com',
                    phone: '555-222-1234'
                }]
            }),

            columns: [{
                text: 'Name',
                dataIndex: 'name',
                width: 200
            }, {
                text: 'Email',
                dataIndex: 'email',
                width: 250
            }, {
                text: 'Phone',
                dataIndex: 'phone',
                width: 120
            }],
            listeners: {
                childcontextmenu: function (grid, location) {
                    const {
                        record,
                        event
                    } = location;
                    grid.deselectAll();
                    grid.setSelection(record);
                    menu.showAt(event.getX(), event.getY());
                    event.stopEvent()
                }
            }
        })
    }
});

相关问题