如何保持primefaces rowexpansion开放?

问题描述 投票:1回答:3

到目前为止,我有一个嵌套的数据表,行扩展,所以上帝,但我想保持所有行扩展(打开)如何在primefaces上实现这一点?

提前致谢。

对不起,我没有告诉我使用的版本是什么版本的3.5版。

jsf primefaces
3个回答
14
投票

根据Primefaces 4.0文档:

p:rowToggler组件放置展开/折叠图标,单击折叠的行加载带有ajax的展开内容。如果需要在默认情况下将行显示为展开,请使用在渲染每行之前计算的expandedRow属性,以便支持值表达式。

要保持所有行都打开,请在数据表中使用它,如下所示:

<p:dataTable value="#{bean.list}" expandedRow="#{true}">

要在更新之前打开已打开的行,您需要:

  • 跟踪(服务器端可能是最好的)手动打开和关闭哪些行(通过ajax执行此操作)
  • 在(重新)加载p:dataTable时,您应该在expandedRow属性中放置一个EL来评估它正在处理的当前行(使用var属性或数据表或rowkey上的索引),该值对于之前展开的每一行都返回true。

像这样的东西(没有经过全面测试)

<p:dataTable value="#{bean.list}" var="myRow" expandedRow="#{bean.isExpanded(myRow)}">

以下是谷歌代码中的the feature request,目标是3.5.12和4.0。


2
投票

另一个解决方案是:

<p:commandButton type="button" onclick="jQuery('.ui-row-toggler').click()" value="Expand/Collapse All" />

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>
© www.soinside.com 2019 - 2024. All rights reserved.