我有GridPanel和TreePanel实例。 GridPanel中的元素可以拖动到树状面板中。但我无法检测哪个树节点收到这些拖动的项目。
我使用以下代码初始化树面板DD(从Ext.tree.TreePanel派生的类的方法):
initDD: function() {
var treePanelDropTargetEl = this.getEl();
var treePanelDropTarget = new Ext.dd.DropTarget(treePanelDropTargetEl, {
ddGroup: 'ddgroup-1',
notifyDrop: function(ddSource, e, data) {
// do something with data, here I need to know target tree node
return true;
}
});
}
那么如何找出哪个树节点在“notifyDrop”处理程序中收到拖动的项目。我可以使用e.getTarget()并计算节点,但我不喜欢这种方法。
答案 0 :(得分:1)
如果您使用TreeDropZone
(而不是DropTarget
),您将拥有更多特定于树的选项和事件,例如onNodeDrop
。请注意,有很多方法可以使用Ext JS进行DnD。
答案 1 :(得分:0)
这是某种解决方案
MyTreePanel = Ext.extend(Ext.tree.TreePanel, {
listeners: {
nodedragover: function(e) {
// remember node
this.targetDropNode = e.target;
}
}
initComponent: function() {
// other initialization steps
this.targetDropNode = false;
var config = {
// ...
dropConfig: {
ddGroup: 'mygroupdd',
notifyDrop: function(ddSource, e, data) {
// process here using treepanel.targetDropNode
}
}
}
// ...
};
// other initialization steps
}
});