如何使用Ext.tree.ViewDDPlugin的事件?
我有一个使用DDPplugin的TreePanel,但我想知道如何监听drop事件。
这就是我的代码:
var monPretree = Ext.create('Ext.tree.Panel',{
id : 'treepanel',
title : 'TITRE',
//width : 800,
//height : 600,
width : 500,
enableDD: true,
useArrows : true,
viewConfig : {
plugins : {
ptype: 'treeviewdragdrop',
appendOnly: true,
listeners: {
drop: function (node, data, overModel, dropPosition) {
alert('CHANGE');
},
notifyDrop: function (dragSource, event, data) {
var nodeId = data.node.id;
alert(nodeId);
},
notifyOver: function (dragSource, event, data) {
alert('over');
}
}
}
},
singleExpand : false,
store : monPrestore,
rootVisible : false,
我想发送drop事件,例如,但我的代码不起作用
谢谢:)
答案 0 :(得分:10)
我有同样的问题,找到了这个页面。
文档中有注释,在事件部分: “此事件通过TreeView触发。将侦听器添加到TreeView对象”
我已经尝试在tree.Panel类中找到方法来获取视图,但未成功。所以,你需要做的只是将listners阻塞配置到viewConfig部分(不在插件部分):
viewConfig : {
plugins : {
ptype: 'treeviewdragdrop',
...
},
listeners: {
drop: function (node, data, overModel, dropPosition) {
alert('CHANGE');
},
}
}
},
http://docs.sencha.com/ext-js/4-0/#!/api/Ext.tree.plugin.TreeViewDragDrop-event-drop
答案 1 :(得分:1)
看一下doc:
beforeinsert( Tree tree, Node parent, Node node, Node refNode, Object options )
在将新子项插入此树中的节点之前触发,返回false以取消插入。 ...
答案 2 :(得分:0)
作为Anton上面正确答案的补充:下面的代码显示了如何“从外部连接”到丢弃事件,例如从控制器等:
// Drag & Drop on the TreePanel
var ganttTreeView = ganttTreePanel.getView();
ganttTreeView.on({
'drop': me.onDrop,
'scope': this
});;
答案 3 :(得分:-1)
您还可以通过覆盖TreeGrid或TreePanel中的dropConfig来捕获drop事件。这是我做的一个例子。
var myTree = new Tree.TreePanel({
id: 'treepanel',
title: 'My Title',
enableDD: true,
ddGroup: 'GridDD',
dataUrl: 'yourMethodURLForJSONData',
dropConfig: {
dropAllowed: true,
ddGroup: "GridDD",
notifyDrop: function(source, e, data) {
alert("A node/leaf is dropped");
//If you want few more details
if (data.grid) {
var node = data.selections[0].data;
alert("This is a node dropped from a Grid.");
} else {
var node = data["node"];
alert("This is a node dropped from a Tree.");
}
}
}
});
你也可以为Ext.ux.tree.TreeGrid做同样的事情。希望它会有所帮助。