1

我有一棵树,我的代码是:

<p:tree id="tree_newCms_pl"
        value="#..............."
        var="item"
        animate="true"
        selectionMode="single" selection=".............."
        dynamic="true"
        draggable="true" droppable="true">

在此处输入图像描述

我只想允许更改节点的位置,并防止它被放到不同的父节点上。我怎样才能解决这个问题?

4

2 回答 2

3

我通过执行以下操作解决了类似的问题。

在支持 bean 中检查事件中 drop TreeNode 的类型,并且仅在它是被拖动节点的有效目标时才更新底层数据模型。

TreeNode dragNode = event.getDragNode();
TreeNode dropNode = event.getDropNode();

if ( dropNode.getType().equals( VALID_TYPE ) )
{
   //Update the underlying data structure here
}
else
{
  //Display a warning to the user if required
}

我也在侦听器事件中更新树,因此它从数据模型中重绘,例如

<p:ajax event="dragdrop" listener="#{managingBean.onDragDrop}" update="tree_newCms_p"/>

如果你不重绘树,它会在错误的位置显示元素,即使没有执行底层移动。

于 2014-01-23T11:11:55.850 回答
3

这可以使用属性来完成。dropRestrict="sibling".

<p:tree id="tree_newCms_pl"
        value="#..............."
        var="item"
        animate="true"
        selectionMode="single" selection=".............."
        dynamic="true"
        draggable="true" droppable="true" dropRestrict="sibling">

根据文档描述

定义删除节点时的父子限制,有效值为无(默认)和兄弟。

于 2017-11-24T09:14:46.860 回答