繁体   English   中英

弹性树控件拖放.item位置

[英]Flex tree control drag drop .item position

只是面临树控制拖放困难。
假设我有启用了拖放功能的树。 我想将哪个node(id)放到哪个节点内。

1]如果我将“ Cat1”节点拖到“ Cat3”内,我想标识“ cat1”和“ cat3”的同级ID。

2]总的来说,我想知道当前元素的ID与
它的新父代和新职位,并保存这些职位。

3]同样,当移到“ cat3”之外时,“ cat4”也想知道它的位置及其同级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)"            
            />

当我不得不检查接收孩子的节点时,我遇到了这样的问题。 为了使节点成为父节点,我使用了:

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;
   }

希望这会帮助一些人

通过听树上的dragComplete暂时解决了问题
dragComplete =“ handleDragComplete(event)

当拖动完成后,我从树中获取更改的dataprovider,然后在更改后的dataprovider中递归搜索“拖放项”(“ id” +“ label”)以找到其在树中的位置。 所选节点所在的节点(父节点)的“ id”。 并触发保存到数据库api。

任何人都有更好的选择。 请回复

谢谢 :)

DragEvent包含dragSource元素。 它包含要拖动的元素。 如果是树,则其类型为“ treeItems”。 var items:Array = event.dragSource.datForFormat("treeItems") as Array; 拖动树节点时,只有一个元素,即items[0]可以很容易地位于(更改的)树内部。

但是,似乎没有办法揭示如果在当前拖动位置释放该项目, 在何处插入该项目(例如,防止将节点拖动到某个位置)。 “ calculateDropIndex()”函数仅计算放置节点的虚拟矩阵中的行(但不计算列/缩进)。 这纯粹取决于y坐标,并且可以是远远大于节点总数的索引,而例如在最后一个节点之后的行中,相同的索引可能会将元素作为最后一个子节点的子元素删除,与最后一个子节点或与根节点平行的子节点。 我还没有找到一种简单的方法(除了在Tree dragDrop处理程序中复制代码)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM