到目前为止,我有一个带行扩展的嵌套数据表,所以上帝,但我想保持所有行扩展(打开)如何在primefaces上实现这一点?
提前感谢。
抱歉,我没有告诉我使用的版本是什么版本的3.5版本。
答案 0 :(得分:13)
根据Primefaces 4.0文档:
p:rowToggler 组件放置展开/折叠图标,单击折叠的行加载 用ajax扩展内容。如果您需要在默认情况下将行显示为展开,请使用 expandedRow 在呈现每一行之前评估的属性,因此支持值表达式。
要打开所有行,请在数据表中使用它,如下所示:
<p:dataTable value="#{bean.list}" expandedRow="#{true}">
要在更新前打开已打开的行,您需要:
p:dataTable
您应该在expandedRow
属性中放置一个EL来评估它正在处理的当前行(使用var属性或数据表或rowkey上的索引)对于之前展开的每一行都返回true。像这样的东西(未经过充分测试)
<p:dataTable value="#{bean.list}" var="myRow" expandedRow="#{bean.isExpanded(myRow)}">
以下是Google代码中的the feature request,其目标是3.5.12和4.0。
答案 1 :(得分:2)
另一种解决方案可能是:
<p:commandButton type="button" onclick="jQuery('.ui-row-toggler').click()" value="Expand/Collapse All" />
答案 2 :(得分:0)
如果您想在开始时折叠您的行:
<p:headerRow>
<p:column styleClass="my-class">
<h:outputText value="#{bean.value}"/>
</p:column>
</p:headerRow>
...
<script>
$(document).ready(function () {
$('td.my-class > .ui-rowgroup-toggler').click();
});
</script>
答案 3 :(得分:0)
如果只更新行子级而不更新所有表单或数据表,您可以保持打开 rowExpansion。
例如,如果父行是第 3 项:
update=":tabViewDetail:idTableDetailProduct:3:idTableDetailProductChild"
Y para hacerlo de forma dinámica podríamos hacerlo pasándole el índice del elemento padre:
update=":tabViewDetail:idTableDetailProduct:#{productController.indexParent}:idTableDetailProductChild"
父行的索引可以通过将其添加到父数据表中使用以下属性获得:
rowIndexVar="indexParent"
我们像这样将它设置为 bean:
<f:setPropertyActionListener value="#{indexParent}" target="#{productController.indexParent}" />
示例如下
ProductsList.xhtml
<!-- PRODUCT LIST -->
<p:dataTable id="idTableDetailProduct"
value="#{productController.productDetailDTOs}"
var="productDetail"
...
rowIndexVar="indexParent">
<p:rowExpansion>
<!-- PRODUCT LIST CHILD -->
<p:dataTable id="idTableDetailProductChild"
value="#{productDetail.productDTO.listProductsChild}"
var="productChild"
...>
<!-- VIEW PRODUCT DETAIL -->
<p:commandButton
id="idCommandButtonDetailProductChild"
...>
<f:setPropertyActionListener value="#{indexParent}" target="#{productController.indexParent}" />
</p:commandButton>
productController Bean (Java)
@ManagedBean(name="productController")
public class ProductController{
int indexParent;
public int getIndexParent() {
return indexParent;
}
public void setIndexParent(int indexParent) {
this.indexParent = indexParent;
}
}
ProductDialog.xhtml
<h:body>
<ui:composition>
<p:dialog id="idDialogDetailProduct"
...>
<!-- SAVE COMPONENT BUTTON -->
<p:commandButton
id="idCommandButtonUpdate"
...
update=":tabViewDetail:idTableDetailProduct:#{productController.indexParent}:idTableDetailProductChild" />
</p:dialog>
</ui:composition>
</h:body>
这个例子是我从对this post的回答中得到的