【问题标题】:p:treeNode expand on label clickp:treeNode 在标签点击时展开
【发布时间】:2017-04-14 09:02:48
【问题描述】:

在 Primefaces 中,我想在单击其标签时展开 <p:treeNode>,而不是在单击小三角形时。 找不到任何 .xhtml 文档,但发现节点是这样创建的:

...
final TreeNode parentNode = this.addNode(false, "Parent", this.root, targetView1); //first parameter means start expanded or not
this.addNode(, "ChildNode", parentNode, "targetView2");
...

有可能吗?谢谢。

【问题讨论】:

  • 您可以(在普通的 html/javascript 中)总是向标签添加一个简单的“点击”处理程序,以模拟对相应三角形的点击...
  • 你可以使用p:commandLink
  • 我尝试自己实现树节点的这种缺乏功能,但没有取得多大成功。有谁知道我可能会参考的任何示例以更好地了解我如何做到这一点?提前谢谢!

标签: primefaces treenode


【解决方案1】:

以防万一有人对我认为@Kukeltje 所指的解决方案感兴趣,这是我的解释:

XHTML:

    <p:tree value="#{Bean.rootNode}" var="node" style="width: 100%" id="tree" selectionMode="single">
         <p:treeNode id="node">                                
            <h:outputText value="#{node.name}"  /> 
         </p:treeNode>    
         <p:ajax event="select" update=":form:tree" listener="#{Bean.onNodeSelect}" />
    </p:tree>

豆子:

public void onNodeSelect(NodeSelectEvent event) {
    if (event.getTreeNode().isExpanded()) {
        //closes if it is open.
        event.getTreeNode().setExpanded(false);
    } else {
        //open if it is closed.
        collapsingORexpanding(event.getTreeNode(), false);//this is so all children are closed under this node. trust me, you want this...
        event.getTreeNode().setExpanded(true);
    }
}

public void collapsingORexpanding(TreeNode n, boolean option) {
    if (n.getChildren().isEmpty()) {
        n.setSelected(false);
    } else {
        for (TreeNode s : n.getChildren()) {
            collapsingORexpanding(s, option);
        }
        n.setExpanded(option);
        n.setSelected(false);
    }
}

【讨论】:

    【解决方案2】:

    selection 添加到您的查看器:

    [(selection)]="selectedTreeNode"
    (onNodeSelect)="onNodeSelect($event)"
    

    在你的控制器中定义你的价值:

    selectedTreeNode: TreeNode;

    处理onNodeSelect():

    onNodeSelect(event: any) {
        this.selectedTreeNode.expanded = !this.selectedTreeNode.expanded;
    }
    

    干杯!

    【讨论】:

    • 这个 PrimeFaces 有什么关系?
    猜你喜欢
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    相关资源
    最近更新 更多