2011-12-21 63 views
0

我试图执行以下操作:如何在ExtJs4树中找到最新丢弃的节点

我有2个可以拖放的树形面板。我可以将一些项目从第一棵树拖到第二棵树。第一个树是组件的目录,第二个树是产品构造器。在某些情况下,当我将一个节点拖放到构造函数中时,我需要将子节点追加到被删除的节点。所以实际上,当我放弃的时候,我需要同时添加2个节点:被删除的节点和我在代码中添加的第二个节点。

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

任何想法?

回答

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 
        }); 
       } 
      }); 
     } 
    } 
0

您可以使用Ext.tree.plugin.TreeViewDragDrop类中提供的drop事件。这个类基本上为树的视图提供拖放功能(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关于如何得到你需要的数据的详细信息。

+0

是的,我知道我应该使用这个插件,但问题是如何找到最新的丢弃节点。我通过阅读文档,但我没有找到答案,你能提出什么建议吗? – 2011-12-21 23:33:57

相关问题