2012-08-13 7 views
1

나는 끌어서 놓기를 원하는 두 개의 treepanels 있습니다. 나는 이것을위한 플러그인이 있다는 것을 이해하지만, 나는 그것이 특정 방식으로 행동하기를 원한다. 내 treepanels에서 나무의 루트 노드를 보여 주며 그 다음 모든 자식 노드를 보여줍니다. 기본 DD를 사용하면 트리의 다른 레벨 (루트의 형제, 루트의 자식)에 항목을 드롭 할 수 있습니다. 여기에서 모든 항목을 일관성을 위해 루트의 하위로 지정합니다. treepanel에 끌어다 놓으면 항목을 루트의 자식으로 연결하고 루트의 형제는 연결하지 않도록하려면 어떻게해야합니까? 이유 : 이 기능의 작동 방식을 이해하지 못하는 사용자의 경우 한쪽 방향으로 1 밀리미터가 있으면 항목이 형제에서 자로 또는 그 반대로 바뀔 수 있습니다.treepanels 기본 동작을 드래그 앤 드롭

또한 나는 그 아이들을 멀리 드래그 할 수 있기를 바랍니다. 가능한 한 루트를 이동할 수 없습니다.

답변

1

예 가능합니다. 대상 트리 패널의 트리 뷰에서 'beforedrop'이벤트를 수신하여 원하는 것을 얻을 수 있습니다. 이 같은 것 http://jsfiddle.net/EYtnk/1/ .. beforedrop 이벤트의 인수 중 하나는 드래그되는 노드입니다. 소스 트리의 루트 노드인지 'false false'인지 확인할 수 있습니다.

P.S : 예에서 두 나무에 동일한 저장소를 사용 했으므로 노드가 양쪽에 추가됩니다.

+0

마치 작동하지만 이전 노드를 삭제하는 방법입니다. 또한, 패널 내에서 드래그하는 방법에 대해 설명합니다. – Bbb

+0

내가 언급했듯이 두 나무에 동일한 저장소를 사용했습니다. 나무에 대해 두 개의 다른 저장소를 사용하는 경우 드래그 한 노드를 알고 있기 때문에 첫 번째 저장소에서 이전 노드를 삭제하는 것이 좋습니다. firstStore.getRootNode(). removeChild ('draggednode')와 같은 것입니다. 예에서 첫 번째 트리를 dragGroup으로 만들고 두 번째 트리를 dropGroup으로 만들었습니다. config ddGroup을 사용하는 경우 : 동일한 트리 내에서 드래그를 처리하는 계정이며 두 번 모두 beforedrop에 대한 리스너를 추가 할 수 있습니다. 트리를 드래그하여 노드의 소스를 확인하십시오. – jssridhar

+0

질문, 어떻게 '노드'의 소스에 액세스합니까? 나는 dropPosition을 활용하여 노드가 어디에 놓여 있는지를 설명해야한다고 생각한다. 맞습니까? – Bbb