只是在树控件拖放时遇到了困难。
假设我有一个允许拖放的树,我想把哪个节点(id)放到哪个节点里面。
1]如果我将“Cat1”节点拖到“Cat3”内,我希望标识“cat1”和“cat3”的同级节点的id。
2]一般来说,我想知道当前元素的id,这些元素将沿着
并保存这些位置。
3]当“cat4”移到“cat3”之外时,我想知道它的位置和它的兄弟id。
<mx:XML id="treeDP">
<node label="Categories">
<node label="Cat1" id="1" isBranch="true"/>
<node label="Cat2" id="2" isBranch="true"/>
<node label="Cat3" id="3" isBranch="true">
<node label="Cat4" id="4" isBranch="true"/>
</node>
</node>
</mx:XML>
<mx:Tree id="compBalanced"
width="420" height="439"
dataProvider="{treeDP}"
showRoot="false"
labelField="@label"
doubleClickEnabled="true"
dragEnabled="true"
dropEnabled="true"
dragDrop="onDragDrop(event)"
/>
3条答案
按热度按时间flvtvl501#
我遇到过这样的问题,当我必须检查接收子节点的节点时。为了得到父节点,我使用了以下方法:
我希望这会对一些人有所帮助
yc0p9oo02#
我通过监听树上的dragComplete暂时解决了这个问题
dragComplete=“handleDragComplete(事件)
当拖拽完成后,我从树中得到改变的数据提供者,然后我在改变的数据提供者中递归地搜索“拖拽的项”(“id”+“label”),以找到它在树中的位置,即,所选节点被放置在其中的节点(父节点)的“id”,并激发保存到数据库API。
任何人都有更好的选择。请回复
谢谢你:)
raogr8fs3#
DragEvent包含一个dragSource元素。它包含被拖动的元素。在树的情况下,它的类型是“treeItems”。
var items:Array = event.dragSource.datForFormat("treeItems") as Array;
当拖动一个树节点时,只有一个元素,items[0]
,它可以很容易地在(改变的)树中找到。然而,似乎有一种说法,无法显示 * 如果 * 在当前拖动位置释放此项目 * 将 * 插入 * 的位置(例如,防止节点被拖到某个位置)。"calculateDropIndex()'函数只计算行(但不是列/缩进)。这完全取决于y-坐标,并且可以是远大于节点总数的索引,而例如在最后节点之后的行中,相同的索引可以丢弃作为最后子节点的子节点的元素,是与最后一个子节点平行还是与根节点平行。我还没有找到一种简单的方法来区分(除了复制Tree dragDrop处理程序中的代码)