我在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'
}]
}),
这些代码在拖放时可以剪切和粘贴。我想在拖放时将这些代码作为复制和粘贴。请帮我。 提前谢谢。
答案 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
设置为两个视图。