Как запустить событие после Drag & Drop на TreePanel - PullRequest
4 голосов
/ 10 июня 2011

Как я могу использовать события Ext.tree.ViewDDPlugin?

У меня есть TreePanel, которая использует DDPplugin, но я хотел бы знать, как прослушать событие удаления.

Вот как выглядит мой код:

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,

Я хотел бы, например, запускать события отбрасывания, но мой код не работает

Спасибо:)

Ответы [ 4 ]

10 голосов
/ 26 ноября 2011

У меня тот же вопрос и я нашел эту страницу.

В документации, в разделе событий есть примечание: «Это событие вызывается через TreeView. Добавить слушателей к объекту TreeView»

Я попытался найти метод в классе tree.Panel, чтобы получить представление, безуспешно. Итак, все, что вам нужно сделать, просто поместить блок списков в конфигурации в раздел 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 голос
/ 10 июня 2011

Посмотрите на документ:

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

Запускается до того, как новый дочерний элемент вставляется в узел в этом дереве, возвращает false, чтобы отменить вставку....

0 голосов
/ 10 марта 2014

Как дополнение к правильному ответу Антона выше: код ниже показывает, как «подключиться извне» для отбрасывания событий, например, из контроллера и т. Д .:

    // Drag & Drop on the TreePanel
    var ganttTreeView = ganttTreePanel.getView();
    ganttTreeView.on({
        'drop': me.onDrop,
        'scope': this
    });;
0 голосов
/ 30 ноября 2011

Вы также можете перехватить событие удаления, переопределив dropConfig внутри TreeGrid или TreePanel.Вот пример, как я это сделал.

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.Надеюсь, что это поможет.

...