2012-08-17 59 views
1

我設立一個自定義的阻力,並與treepanels,在這裏我想所有節點連接到我已在根目錄下創建一個節點拖放實現。我試圖以某種方式將一個節點從一個樹面板拖到另一個面板。我可以將物品移開,但從另一側移開時會遇到麻煩。ExtJS的4去除TreePanel中自定義拖動給錯誤節點拖動

這裏是我的代碼,這是我的TreePanel中內:

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

這設法刪除的項目從第一TreePanel中,但立刻提供了以下錯誤:

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

從文檔的不同:返回false到放置操作是無效的此事件的信號,如果拖曳代理將動畫回點從該阻力開始了。 返回0,爲了使數據傳輸操作不應該發生這種事件的信號,但該手勢是有效的,並且修復操作不應該發生。 任何其他返回值都會繼續進行數據傳輸操作。 – Bbb 2012-08-17 17:07:40

+0

如果我返回0,我不會收到錯誤。然而,返回0不工作如何文檔說,它確實傳輸數據,並以我不想要的方式... – Bbb 2012-08-17 17:08:20

+0

解決此問題的最佳方法是什麼,因爲它看起來像文檔不正確? – Bbb 2012-08-18 18:48:26

回答

1

返回假導致代碼中的問題。返回0也不適用於文檔描述。由於extjs 4.07版中的錯誤,代碼無法正常運行,所以代碼在版本4.1中按預期運行。

從文檔:將false返回給此事件表示放置手勢無效,並且如果拖動代理將回放動畫到拖動開始的地步。返回0此事件表示不應該發生數據傳輸操作,但手勢是有效的,並且不應發生修復操作。任何其他返回值都會繼續進行數據傳輸操作。

從文檔中的上述行爲是從什麼發生