【问题标题】:How to prevent tree items from being dragged into themselves?如何防止树项被拖入自身?
【发布时间】:2011-02-02 11:08:10
【问题描述】:

我有一个带有 dragMoveEnabled = true 的弹性树。我想知道,当一个项目被拖入自身或它的孩子时。我想在树的 onDragOver 处理程序中使用 DragManager.showFeedback(DragManager.NONE),但不知道如何让它工作。我使用嵌套对象的 ArrayCollection 作为树的数据源。

【问题讨论】:

    标签: apache-flex drag-and-drop tree


    【解决方案1】:
        private function onDragOver(event:DragEvent):void {
            event.preventDefault();
            event.currentTarget.hideDropFeedback(event);                
    
            var index:int = tree.calculateDropIndex(event);
            tree.selectedIndex = index;
            var subCategory:CategoryVO = CategoryVO(tree.selectedItem);
    
            var currentCategory:CategoryVO = subCategory;
    
            while(currentCategory.parent != 0) {
            if (currentCategory.parent == _draggedItem.id) {
                DragManager.showFeedback(DragManager.NONE);
                return;
            }
            currentCategory = tree.getParentItem(currentCategory);
    
            if (currentCategory == null) {
                break;
            }
    
            DragManager.showFeedback(DragManager.MOVE);
            tree.showDropFeedback(event);
       }
    

    我就是这样解决的。

    _draggedItem 保存当前拖动的项目,在树的 onDragEnter 处理程序中设置。 CategoryVO 是我使用的值对象。

    【讨论】:

      【解决方案2】:

      你能做这样的事情吗:

      if(event.currentTarget == event.target){
          //item is being dropped on itself
      }
      

      【讨论】:

      • 这禁用了 dragMove 功能,因为我正在将项目从树拖到树中:-( 我需要类似 getItemAtDropIndex();
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      相关资源
      最近更新 更多