数据表行扩展树表
Datatable row expansion Treetable
此示例包括列出角色,对于每个角色,我想显示与其关联的组和用户。
XHTML
<p:column headerText="Designation">
<h:outputText value="#{rl.designation}" />
</p:column>
<p:rowExpansion>
<p:treeTable value="#{roleMB.root}" var="document">
<p:column headerText="Designation">
<h:outputText value="#{document}" />
</p:column>
</p:treeTable>
</p:rowExpansion>
</p:dataTable>
控制器
用于显示每个角色的树表的方法。
public void createRoot(){
List<AffectationRoleGroupe> groupesRole=new ArrayList<AffectationRoleGroupe>();
for(Role rl:roles){
root=new DefaultTreeNode("Root", null);
groupesRole=rl.getAffectationsRG();
for(AffectationRoleGroupe a:groupesRole){
System.out.println(rl.getDesignation());
System.out.println(a.getGroupe().getDesignation());
TreeNode node = new DefaultTreeNode( a.getGroupe().getDesignation(), root);
}
}
首先,您缺少触发每个角色列表组生成的 rowToggle 事件:
<p:ajax event="rowToggle" listener="#{managedBean.createRoot(role)}" update=":treeGroupe" />
<p:rowExpansion>
<p:treeTable id="treeGroupe" value="#{roleMB.root}" var="groupe">
<p:column headerText="Designation">
<h:outputText value="#{groupe.designation}" />
</p:column>
</p:treeTable>
</p:rowExpansion>
第二,在你的方法中,你应该传递你正在收集的角色,然后你必须用角色组填充树的节点:
public void createRoot(Role role){
......
}
您可以看到如何整理 treeTable :http://www.primefaces.org/showcase/ui/data/treetable/basic.xhtml
此示例包括列出角色,对于每个角色,我想显示与其关联的组和用户。
XHTML
<p:column headerText="Designation">
<h:outputText value="#{rl.designation}" />
</p:column>
<p:rowExpansion>
<p:treeTable value="#{roleMB.root}" var="document">
<p:column headerText="Designation">
<h:outputText value="#{document}" />
</p:column>
</p:treeTable>
</p:rowExpansion>
</p:dataTable>
控制器
用于显示每个角色的树表的方法。
public void createRoot(){
List<AffectationRoleGroupe> groupesRole=new ArrayList<AffectationRoleGroupe>();
for(Role rl:roles){
root=new DefaultTreeNode("Root", null);
groupesRole=rl.getAffectationsRG();
for(AffectationRoleGroupe a:groupesRole){
System.out.println(rl.getDesignation());
System.out.println(a.getGroupe().getDesignation());
TreeNode node = new DefaultTreeNode( a.getGroupe().getDesignation(), root);
}
}
首先,您缺少触发每个角色列表组生成的 rowToggle 事件:
<p:ajax event="rowToggle" listener="#{managedBean.createRoot(role)}" update=":treeGroupe" />
<p:rowExpansion>
<p:treeTable id="treeGroupe" value="#{roleMB.root}" var="groupe">
<p:column headerText="Designation">
<h:outputText value="#{groupe.designation}" />
</p:column>
</p:treeTable>
</p:rowExpansion>
第二,在你的方法中,你应该传递你正在收集的角色,然后你必须用角色组填充树的节点:
public void createRoot(Role role){
......
}
您可以看到如何整理 treeTable :http://www.primefaces.org/showcase/ui/data/treetable/basic.xhtml