2012-08-13 84 views
1

我有兩個我想拖放的樹面板。我明白這有一個插件,但是我希望它能以某種方式行事。 在我的treepanels中,我顯示了樹的根節點,然後顯示了它的所有子節點。默認DD允許用戶刪除樹中不同級別的項目(即根的子項,根子項),我希望所有項目都是根子項以保持一致性。我該如何做到這一點,以便任何拖動到樹形面板中的項目都作爲根的孩子而不是根的兄弟。 原因: 對於不明白此功能如何工作的用戶,任何一個方向的毫米都可能會將項目從兄弟變爲兒童,反之亦然。treepanels拖放默認行爲

此外,我想這樣我只能拖走那些孩子,如果可能的話,根不能移動。

回答

1

是的,這是可能的。您可以在目標樹面板的樹視圖上聆聽'beforedrop'事件,並實現您想要的。像這樣的東西 http://jsfiddle.net/EYtnk/1/ .. beforedrop事件的參數之一是被拖動的節點。你可以檢查它是否是源代碼樹的根節點,只是'返回false';

P.S:在這個例子中,我只用了兩個樹的同一個存儲..所以節點被添加到任何一邊。

+0

這看起來像它會工作,但如何刪除舊的節點。另外,如何在面板內拖拽 – Bbb 2012-08-14 14:34:21

+0

正如我所提到的,我對這兩棵樹使用了同一個商店。如果你爲這兩棵樹使用兩個不同的商店,那麼從第一家商店刪除舊節點應該是相當直接的,因爲你知道你拖動了哪個節點。像firstStore.getRootNode()。removeChild('draggednode')。 而在這個例子中,我將第一棵樹作爲dragGroup,將第二棵樹作爲dropGroup ..如果你使用的是一個配置ddGroup:這也是在同一棵樹內拖拽的原因..並且你可以再添加一個偵聽器,樹並驗證被拖動的節點的來源。 – jssridhar 2012-08-14 15:32:02

+0

問題,我如何訪問「節點」的來源。我想我需要利用dropPosition來解釋節點被丟棄的位置,這是否正確? – Bbb 2012-08-14 15:36:25