1

我正在使用树面板设置自定义拖放实现,我希望所有节点都附加到我在根目录下创建的节点。我试图以某种方式将一个节点从一个树面板拖到另一个节点。我可以将物品移过来,但是从另一侧取出时遇到了麻烦。

这是我的代码,这是在我的树形面板中:

viewConfig:{
 plugins:{
  ptype:'treeviewdragdrop',
  DDgroup:'treeDD'
 },

 listeners:{
    beforedrop: function(node, data, dropRec, dropPosition){
      if(dropRec.parentNode.data.text == "Root"){
        console.log('dropping on top level');
        this.up('panel').getStore().getRootNode().getChildAt(0).insertChild(0, data.records[0].data);
        //the below line seems to be causing the error, how should I be removing?
        choicesTree.getRootNode().getChildAt(0).removeChild(data.records[0]);
        //choicesTree is previously defined
        return false;
      }
}

这设法从第一个树形面板中删除了该项目,但立即给出了以下错误:

item is null
fly(item.firstChild).highlight(me.repairHighlightColor, {
4

1 回答 1

1

return false 导致代码中的问题。return 0 也不能像文档描述的那样工作。由于 extjs 4.07 版中的错误,该代码无法正常工作 该代码在 4.1 版中按预期工作

从文档中:将此事件返回 false 表示放置手势无效,并且拖动代理是否将动画返回到拖动开始的点。向此事件返回 0 表示不应进行数据传输操作,但手势是有效的,并且不应进行修复操作。任何其他返回值都会继续进行数据传输操作。

文档中的上述行为与发生的情况不同

于 2012-08-20T17:53:21.063 回答