Apache flex Flex树控件拖放。项目位置
正面临树控件拖放的困难..Apache flex Flex树控件拖放。项目位置,apache-flex,actionscript-3,drag-and-drop,tree,Apache Flex,Actionscript 3,Drag And Drop,Tree,正面临树控件拖放的困难.. 假设启用了拖放功能的树。 我想知道哪个节点(id)放在哪个节点内 1] 如果我将“Cat1”节点拖动到“Cat3”内,我想识别 “cat1”和“cat3”的兄弟姐妹ID 2] 一般来说,我想知道当前元素的ID随 它的新父项和新位置,并保存这些位置 3] 还有“cat4”,当移到“cat3”之外时,我想知道它的位置和它的兄弟id <mx:XML id="treeDP"> <node label="Categories">
假设启用了拖放功能的树。 我想知道哪个节点(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)"
/>
通过在树上收听dragComplete,临时解决了问题
dragComplete=“handleDragComplete(事件) 当拖动完成时,我从树中获取更改的数据提供程序,然后递归地 在已更改的数据提供程序中搜索“拖动项”(“id”+“标签”),以查找其在树中的位置,即删除所选节点(父节点)的节点的“id”。 并启动“保存到数据库”api 任何人都有更好的选择。 请回复
谢谢:)通过收听树上的dragComplete临时解决了问题
dragComplete=“handleDragComplete(事件) 当拖动完成时,我从树中获取更改的数据提供程序,然后递归地 在已更改的数据提供程序中搜索“拖动项”(“id”+“标签”),以查找其在树中的位置,即删除所选节点(父节点)的节点的“id”。 并启动“保存到数据库”api 任何人都有更好的选择。 请回复
谢谢:)我遇到了这样的问题,当时我不得不检查接收孩子的节点。 为了获得节点父节点,我使用了以下方法:
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;
}
希望这能帮助一些人当我不得不检查接收孩子的节点时,我遇到了这样的问题。 为了获得节点父节点,我使用了以下方法:
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;
}
希望这会对某些人有所帮助。DragEvent包含一个dragSource元素。它包含要拖动的元素。 如果是树,则为“treeItems”类型。
var items:Array=event.dragSource.datForFormat(“treeItems”)作为数组代码>
拖动树节点时,只有一个元素,items[0]
,可以轻松地定位在(更改的)树中
但是,似乎无法显示如果在当前拖动位置释放该项,该项将插入何处(例如,防止将节点拖动到特定位置)。“calculateDropIndex()”函数仅计算节点所在虚拟矩阵中的行(而不是列/缩进)。这完全取决于y坐标,并且可以是远远大于节点总数的索引,而例如,在最后一个节点后的行中,同一索引可以将元素作为最后一个子节点的子节点放置,与最后一个子节点平行或与根节点平行。我还没有找到一个简单的方法来判断(除了复制树dragDrop处理程序中的代码)DragEvent包含一个dragSource元素。它包含要拖动的元素。
如果是树,则为“treeItems”类型。
var items:Array=event.dragSource.datForFormat(“treeItems”)作为数组代码>
拖动树节点时,只有一个元素,items[0]
,可以轻松地定位在(更改的)树中
但是,似乎无法显示如果在当前拖动位置释放该项,该项将插入何处(例如,防止将节点拖动到特定位置)。“calculateDropIndex()”函数仅计算节点所在虚拟矩阵中的行(而不是列/缩进)。这完全取决于y坐标,并且可以是远远大于节点总数的索引,而例如,在最后一个节点后的行中,同一索引可以将元素作为最后一个子节点的子节点放置,与最后一个子节点平行或与根节点平行。我还没有找到一个简单的方法来判断(除了复制树dragDrop处理程序中的代码)我尝试在drapDrop()中查找位置,但无法在树中找到正确的位置。calculateDropIndex在不同的嵌套级别上返回不同的位置。我尝试在drapDrop()中查找位置但我无法得到树的正确位置。calculateDropIndex返回不同嵌套级别上的不同位置。