You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ext JS首列锁定时如何捕获Grid Panel的groupclick事件?

Ext JS 7.2 锁定列分组Grid的groupclick事件不触发问题解决

当Grid首列设置为锁定状态时,分组表头的groupclick事件无法触发,但groupexpand和groupcollapse事件可正常执行。原因是:带锁定列的Grid会生成两个独立视图——锁定视图(lockedView)和普通视图(normalView),分组表头实际渲染在锁定视图的头部区域,而默认的groupclick事件仅绑定在普通视图上,因此点击分组表头时无法触发该事件。

以下是两种可行的解决方案:

方案一:为锁定视图绑定groupclick事件

在Grid的afterrender事件中获取锁定视图,手动为其添加groupclick监听:

Ext.define('MyGrid', {
    extend: 'Ext.grid.Panel',
    features: [{
        ftype: 'grouping'
    }],
    listeners: {
        groupexpand: function(view, node, group) {
            console.log('Group expanded');
        },
        groupcollapse: function(view, node, group) {
            console.log('Group collapsed');
        },
        afterrender: function(grid) {
            const lockedView = grid.getLockedView();
            if (lockedView) {
                lockedView.on('groupclick', function(view, node, group) {
                    console.log('Group click from locked view');
                    // 此处编写自定义逻辑
                });
            }
        }
    },
    columns: [{
        text: 'Task',
        flex: 1,
        tdCls: 'task',
        sortable: true,
        dataIndex: 'description',
        locked:true
    }]
});

方案二:通过DOM事件委托监听分组表头点击

直接在Grid的根元素上监听点击事件,通过选择器匹配分组表头元素:

Ext.define('MyGrid', {
    extend: 'Ext.grid.Panel',
    features: [{
        ftype: 'grouping'
    }],
    listeners: {
        groupexpand: function(view, node, group) {
            console.log('Group expanded');
        },
        groupcollapse: function(view, node, group) {
            console.log('Group collapsed');
        },
        click: function(grid, e) {
            const groupHeader = e.getTarget('.x-grid-group-hd');
            if (groupHeader) {
                const view = grid.getView();
                const groupRecord = view.getGroupRecord(groupHeader);
                console.log('Group clicked:', groupRecord.get('description'));
                // 此处编写自定义逻辑
            }
        },
        element: 'el'
    },
    columns: [{
        text: 'Task',
        flex: 1,
        tdCls: 'task',
        sortable: true,
        dataIndex: 'description',
        locked:true
    }]
});

注意事项

  • 方案一贴合Ext JS原生事件体系,可直接使用groupclick事件的原生参数(view、node、group)
  • 方案二通过DOM事件委托实现,兼容性更强,无需依赖视图的事件绑定逻辑

内容的提问来源于stack exchange,提问作者IamAnih

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 13:31:08