Extjs 如何在拖动后触发事件&;落在树上

Extjs 如何在拖动后触发事件&;落在树上,extjs,panel,Extjs,Panel,如何使用Ext.tree.viewdplugin的事件 我有一个使用DDPplugin的TreePanel,但我想知道如何收听drop事件 这就是我的代码的样子: var monPretree = Ext.create('Ext.tree.Panel',{ id : 'treepanel', title : 'TITRE', //width : 800, //height : 600,

如何使用Ext.tree.viewdplugin的事件

我有一个使用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,
例如,我想触发丢弃事件,但我的代码不起作用


谢谢:)

看一下文档:

beforeinsert( Tree tree, Node parent, Node node, Node refNode, Object options )

在将新的子节点插入到此树中的节点之前激发,返回false以取消插入

我有同样的问题,找到了这一页

文件中的事件部分有注释: “此事件通过TreeView触发。将侦听器添加到TreeView对象”

我试图在tree.Panel类中找到方法以获取视图,但未成功。所以,您只需将listners块放在配置的viewConfig部分(而不是插件部分):


您还可以通过覆盖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执行相同的操作。希望能有所帮助。

作为安东上述正确答案的补充:下面的代码显示了如何“从外部连接”以删除事件,例如从控制器等:

    // Drag & Drop on the TreePanel
    var ganttTreeView = ganttTreePanel.getView();
    ganttTreeView.on({
        'drop': me.onDrop,
        'scope': this
    });;

这些参数正确吗<代码>节点不是树节点。无法获取移动节点的父节点。未被激发。这是树侦听器还是ViewConfig侦听器?@MagnoC检查文档:此事件是在树存储上定义的。我认为存储不应对接口事件负责。@MagnoC:我不知道我的回答是否仍然相关,因为问题和回答日期是2010年6月
    // Drag & Drop on the TreePanel
    var ganttTreeView = ganttTreePanel.getView();
    ganttTreeView.on({
        'drop': me.onDrop,
        'scope': this
    });;