在ExtJs树面板中限制拖放

时间:2014-05-03 09:21:58

标签: extjs4.2

我在ExtJs(Tree-1和Tree-2)中开发了两个树状图。在所有情况下,这些树正在两个之间拖放。我想在以下情况下拖放 (仅从Tree-1到Tree-2),(从Tree-1到Tree-1)和(从Tree-2到Tree-2)。这是想限制从Tree-2拖放到Tree-1。以下是我的源代码。

/*Tree1*/
    Ext.create('Ext.tree.Panel', {
                title: 'From Agent:',
                collapsible: true,
                collapseDirection: Ext.Component.DIRECTION_TOP,
                frame:true,
                width: 310,
                minHeight: 50,
                margin: '0 0 0 0',
                store: store1,
                listeners:{
                    checkchange:function( node, checked, eOpts){
                         node.cascadeBy(function(n){n.set('checked', checked);} );
                    }
                },
                rootVisible: false,
                viewConfig: {
                    plugins: {
                        ptype: 'treeviewdragdrop',
                        sortOnDrop: true,
                        containerScroll: true
                    }
                },
                sorters: [{
                    property: 'text',
                    direction: 'ASC'
                }]
            }),

 /*Tree2*/
            Ext.create('Ext.tree.Panel', {
                title: 'To Agent:',
                frame: true,
                collapsible: true,
                collapseDirection: Ext.Component.DIRECTION_TOP,
                width: 310,
                margin: '0 0 0 20',
                minHeight: 50,
                store: store2,
                listeners:{
                    checkchange:function( node, checked, eOpts){
                         node.cascadeBy(function(n){n.set('checked', checked);} );
                    }
                },
                rootVisible: false,
                viewConfig: {
                    plugins: {
                        ptype: 'treeviewdragdrop',
                        sortOnDrop: true,
                        containerScroll: true
                    }
                },
                sorters: [{
                    property: 'text',
                    direction: 'ASC'
                }]
            }),

这些代码在拖放时可以剪切和粘贴。我想在拖放时将这些代码作为复制和粘贴。请帮我。 提前谢谢。

1 个答案:

答案 0 :(得分:3)

从文档中查看此示例:

http://docs.sencha.com/extjs/4.2.2/extjs-build/examples/tree/custom-drop-logic.html

基本上它使用nodedragover事件来控制何时可以放弃。

当您不想允许丢弃时返回false。

至于复制而不是剪切,文档提到了以下内容(虽然我自己从未尝试过):

  

此插件为TreeView提供拖放功能。

     

它创建了DragZone的专用实例,它知道如何拖动   从TreeView中加载传递给a的数据对象   将DragZone的方法与以下属性配合使用:

     

copy:Boolean

     

TreeView的copy属性的值,如果是TreeView,则为true   使用 allowCopy:true 进行配置,并在按下时按下控制键   拖动操作已经开始。

尝试将copy: true设置为两个视图。