首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从dynatree拖放到dynatree

从dynatree拖放到dynatree
EN

Stack Overflow用户
提问于 2012-03-12 23:48:15
回答 3查看 3.2K关注 0票数 1

我试图将数据从一个dynatree拖放到另一个dynatree。在文档中,有一个示例展示了如何在同一棵树中移动节点。有没有可能移动一个节点并将其放入第二个dynaTree中?

第一个树有:

代码语言:javascript
复制
    $("#Tree1).dynatree({
 dnd: {
                    onDragStart: function (node) {

                        logMsg("tree.onDragStart(%o)", node);
                        return true;
                    },
});

第二棵树:

代码语言:javascript
复制
 $("#Tree2").dynatree({
        dnd :{
        onDrop: function (node, sourceNode, hitMode, ui, draggable) {
                            logMsg("tree.onDrop(%o, %o, %s)", node, sourceNode, hitMode);
                            sourceNode.move(node, hitMode);
    },


        onDragEnter: function (node, sourceNode) {


                                logMsg("tree.onDragEnter(%o, %o)", node, sourceNode);
                                return true;
                            }
}
        });

提前感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-09 14:51:29

AFAIK,目前dynatree不支持在不同树之间移动节点。但是,您可以从tree1复制节点并将复制的节点添加到tree2。在此之后,您可以删除tree1中的节点。使用这种方法,您可以模拟在树之间移动节点的行为。

因此,您可以不使用sourceNode.move(node,hitMode),而是使用以下命令:

代码语言:javascript
复制
var copyNode = sourceNode.toDict(true, function (dict) {
    delete dict.key;
});

node.addChild(copyNode);

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2012-11-29 04:31:58

实际上你可以做到这一点。您只需将每个dynatree放在div中,并使该div可删除。DOM可以从droppable中解析dynatree节点对象,因为这就是dynatree附加到事件的内容。

您可以看到一个有效的样例here

票数 1
EN

Stack Overflow用户

发布于 2014-04-11 13:36:51

dynatree 1(可拖动)

代码语言:javascript
复制
$("#tree").dynatree({
dnd: {
                revert: false, // true: slide helper back to source if drop is rejected
                onDragStart: function(node) {

                },
                onDragStop: function(node) {

                }
            },
            cookieId:"dynatree-cb1",
            idPrefix:"dynatree-cb1-"
        });

dynatree 2(可丢弃的)

代码语言:javascript
复制
$("#tree2").dynatree({
dnd: {

                autoExpandMS: 1000,
                preventVoidMoves: true, // Prevent dropping nodes 'before self', etc.
                onDragEnter: function(node, sourceNode) {

                    if(node.data.isFolder){
                      return false;
                    }
                    return true;
                    // return "over";
                  },
                  onDragOver: function(node, sourceNode, hitMode) {


                  },
                  onDrop: function(node, sourceNode, hitMode, ui, draggable) {

                    logMsg("tree.onDrop(%o, %o)", node, sourceNode);
                    var copynode;
                    if(sourceNode) {
                      copynode = sourceNode.toDict(true, function(dict){
                        dict.title = "Copy of " + dict.title;
                        delete dict.key; // Remove key, so a new one will be created
                      });
                    }else{
                      copynode = {title: "This node was dropped here (" + ui.helper + ")."};
                    }
                    if(hitMode == "over"){
                      // Append as child node
                      node.addChild(copynode);
                      // expand the drop target
                      node.expand(true);
                    }else if(hitMode == "before"){
                      // Add before this, i.e. as child of current parent
                      node.parent.addChild(copynode, node);
                    }else if(hitMode == "after"){
                      // Add after this, i.e. as child of current parent
                      node.parent.addChild(copynode, node.getNextSibling());
                    }
                  },
                  onDragLeave: function(node, sourceNode) {
                    /** Always called if onDragEnter was called.
                     */
                    logMsg("tree.onDragLeave(%o, %o)", node, sourceNode);
                  }
                },
            cookieId:"dynatree-cb2",
            idPrefix:"dynatree-cb2-"
        });

试试这段代码,它是有效的。我之前也是这么做的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9670255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档