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