回答:如何仅通过panelheader拖动ExtJS面板?

回答:如何仅通过panelheader拖动ExtJS面板?,extjs,extjs7,Extjs,Extjs7,我有一个面板,它的主体中包含项目,我希望面板本身是可拖动的,但是仅当用户拖动panelheader时才可拖动。(我不希望用户能够通过在主体中单击和拖动来拖动面板)。有没有一个简单的方法可以做到这一点 以下是我创建面板的代码: const newGridPanel = Ext.create({ xtype: 'panel', id: newpanelid, floated: true, cl

我有一个面板,它的主体中包含项目,我希望面板本身是可拖动的,但是仅当用户拖动panelheader时才可拖动。(我不希望用户能够通过在主体中单击和拖动来拖动面板)。有没有一个简单的方法可以做到这一点

以下是我创建面板的代码:

      const newGridPanel = Ext.create({
            xtype: 'panel',
            id: newpanelid,
            floated: true,
            closable: true,
            draggable: true,
            scrollable: true,
            width: 400,
            height: 300,
            resizable: {
                constrainToParent: true,
                dynamic: true,
                edges: 'all',
                minSize: 250,
                maxSize: [window.innerWidth,window.innerHeight]
            },
            layout: 'fit',
            title: 'Title',
            tools: [
                {
                    iconCls: 'x-fa fa-plus',
                    reference: 'addempbtn',
                    handler: function() {
                        newGridPanel.down(xt).getController().onAdd()
                    },
                    tooltip: 'Add a New Employee'
                }
            ],
            defaults: {
                flex: 1
            },
            items: [
                {
                    xtype: xt,
                    id: newgridid,
                }
            ]
        });
        newGridPanel.setX(20);
        newGridPanel.setY(20);
        newGridPanel.show();
编辑:我能够找出问题并纠正它。解决方案与Ext.drag.Source对象的handle属性有关。您必须指定要能够启动拖动的元素的CSS句柄。在我的例子中,更正的代码如下

      const newGridPanel = Ext.create({
            xtype: 'panel',
            id: newpanelid,
            floated: true,
            closable: true,
            draggable: {handle: 'x-panelheader'}, // <- This is the part that needed to be changed
            scrollable: true,
            width: 400,
            height: 300,
            resizable: {
                constrainToParent: true,
                dynamic: true,
                edges: 'all',
                minSize: 250,
                maxSize: [window.innerWidth,window.innerHeight]
            },
            layout: 'fit',
            title: 'Title',
            tools: [
                {
                    iconCls: 'x-fa fa-plus',
                    reference: 'addempbtn',
                    handler: function() {
                        newGridPanel.down(xt).getController().onAdd()
                    },
                    tooltip: 'Add a New Employee'
                }
            ],
            defaults: {
                flex: 1
            },
            items: [
                {
                    xtype: xt,
                    id: newgridid,
                }
            ]
        });
        newGridPanel.setX(20);
        newGridPanel.setY(20);
        newGridPanel.show();
const newGridPanel=Ext.create({
xtype:'面板',
id:newpanelid,
浮动:对,
closable:是的,
可拖动:{handle:'x-panelheader'}//