如何在ExtJs4树中查找最新删除的节点

时间:2011-12-21 15:45:15

标签: drag-and-drop tree extjs4

我正在尝试实施以下内容:

我有2个树状面板,启用了拖放功能。我可以将一些项目从第一棵树拖到第二棵树。第一个树是组件目录,第二个是产品构造函数。在某些情况下,当我将节点放入构造函数时,我需要将子节点附加到已删除的节点。所以当我放弃时,我需要同时添加2个节点:被删除的节点和我在代码中添加的第二个节点。

我决定在drop事件处理程序中添加该额外节点,但问题是我不明白如何找到最新删除的节点。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用drop课程提供的Ext.tree.plugin.TreeViewDragDrop事件。该类基本上为树的视图(TreeView)提供拖放功能。因此,您需要将drop事件添加到TreeView对象,并在触发此事件时添加子节点或其他操作。

要配置TreeView,您可以使用树面板类提供的viewConfig参数。在头上,你可能有 编码这样的代码:

viewConfig: {
    plugins: {ptype: 'treeviewdragdrop'},
    listeners: {
        drop: function(node,data,model,dropPosition,opts) {
            // Add child nodes & other modification codes here...
        }   
    }
}

有关如何获取所需数据的更多详细信息,请参阅drop method in docs

答案 1 :(得分:0)

我设法使用两个事件itemadddrop

的组合来实现我需要的功能

以下是一个示例,希望它对某些人有用:

    onComponentAdd: function (records) {
        var record = records[0];
        this.lastAddedRecord = record;
    },

    onComponentDrop: function (element, data, dropNode) {
        var record = this.lastAddedRecord;

        var data = record.get('Data');
        if (!Ext.isEmpty(data)) {
            var scheme = data.scheme;
            Ext.each(scheme, function (item) {
                if (item.type == 'componentlist') {
                    record.appendChild({
                        text: item.name,
                        loaded: true,
                        expanded: true,
                        allowDrop: true
                    });
                }
            });
        }
    }