刚遇到树控制拖拽的困难..
假设我有启用拖放功能的树。
我想要在哪个节点内droped节点(id)。
1]如果我在“Cat3”中拖动“Cat1”节点,我想识别 “cat1”和“cat3”的兄弟姐妹的ids。
2]一般来说,我想知道当前元素的id与
一起移动
它的新父母和新职位并保存这些位置。
3]“cat4”也被移到“cat3”之外,我想知道它的位置及其兄弟姐妹的身份。
<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)"
/>
答案 0 :(得分:3)
当我必须检查接收孩子的节点时,我遇到了这样的问题。 为了得到节点父节点,我使用了这个:
public function getObjectTarget() : Object {
var dropData : Object = tree.mx_internal::_dropData as Object;
if (dropData.parent != null) {
return dropData.parent;
} else {
// if there is not parent (root of the tree), I take the root directly
var renderer : IListItemRenderer = tree.indexToItemRenderer(0);
return renderer.data;
}
希望这会对某人有所帮助
答案 1 :(得分:0)
通过在树上听dragComplete暂时解决了这个问题 dragComplete =“handleDragComplete(事件)
当拖动完成后,我从树中获取更改的数据提供者,然后递归 在已更改的数据提供者中搜索“拖动的项目”(“id”+“label”)以查找其在树中的位置,即。删除所选节点的节点的“id”(父节点)。 并将保存发送到数据库api。
任何人都有更好的选择。 请回复
谢谢:)
答案 2 :(得分:0)
DragEvent包含一个dragSource元素。它包含被拖动的元素。
在树的情况下,它是“treeItems”类型。
var items:Array = event.dragSource.datForFormat("treeItems") as Array;
拖动树节点时,只有一个元素items[0]
可以很容易地位于(更改的)树内。
然而,似乎没有办法显示 拖到某个地方)。 'calculateDropIndex()'函数仅计算放置节点的虚拟矩阵中的行(但不是列/缩进)。这纯粹取决于y坐标,并且可以是远大于节点总数的索引,而例如在最后一个节点之后的行中,相同的索引可以将该元素作为最后一个子节点的子节点,与最后一个子节点并行或与根节点并行。我还没有找到一种简单的方法(除了复制Tree dragDrop处理程序中的代码)