我一直在尝试使用核心 JSF 来实现表行展开/折叠的功能,而且我还必须保留排序。在核心 JSF 中有没有一种方法可以实现此功能?

有帮助吗?

解决方案

如果您在使用仅参考实现坚持,那么你就不能使用嵌套h:dataTable和/或h:panelGroup和的好四处的CSS的杆拿到好听对齐。然后,您可以使用JavaScript智能的方式来显示/隐藏行的细节。

下面是一个基本的开球示例:

<h:dataTable value="#{bean.orders}" var="order">
    <h:column>
        <h:panelGrid columns="3">
            <h:graphicImage id="expand" value="expand.gif" onclick="toggleDetails(this);" />
            <h:outputText value="#{order.id}" />
            <h:outputText value="#{order.name}" />
        </h:panelGrid>
        <h:dataTable id="details" value="#{order.details}" var="detail" style="display: none;">
            <h:column><h:outputText value="#{detail.date}" /></h:column>
            <h:column><h:outputText value="#{detail.description}" /></h:column>
            <h:column><h:outputText value="#{detail.quantity}" /></h:column>
        </h:dataTable>
    </h:column>
</h:dataTable>

toggleDetails()功能可以像(注意,它需要JSF生成的客户端ID到帐户):

function toggleDetails(image) {
    var detailsId = image.id.substring(0, image.id.lastIndexOf(':')) + ':details';
    var details = document.getElementById(detailsId);
    if (details.style.display == 'none') {
        details.style.display = 'block';
        image.src = 'collapse.gif';
    } else {
        details.style.display = 'none';
        image.src = 'expand.gif';
    }
}

其他提示

我认为您不能使用“核心”JSF 来做到这一点(我假设您的意思是仅使用参考实现)。

据我了解,您可以使用 RichFaces 完成子表 子表

您还可以使用 IceFaces 执行类似的操作 - 请参阅 组件展示 (它位于“表”->“可扩展表”下)。然而,其中任何一个都需要您添加和设置另一个库(RichFaces 或 IceFaces),这可能不是您想要的。

简单的展开表RichFaces的

我们可以做的RichFaces的简单扩展桌子 和代码如下...给出

<h:form>
   <rich:dataTable value="#{wonderBean.wonders}" var="wonder">
      <rich:column colspan="3">
         <f:facet name="header">Wonder</f:facet>
     <h:outputText value="#{wonder.name}" />
     <a4j:commandLink id="link" value="#{!wonderBean.show?'[+]':'[-]'}"
        reRender="link">
     <a4j:actionparam name="val" value="#{!wonderBean.show}"
        assignTo="#{wonderBean.show}" />
     </a4j:commandLink>
      </rich:column>
      <rich:columnGroup>
         <rich:column>
        <a4j:outputPanel ajaxRendered="true">
             <rich:dataTable value="#{wonder.details}" var="detail"
            rendered="#{wonderBean.show}" style="border: 0px">
                <rich:column>
            <f:facet name="header">Location</f:facet>
            <h:outputText value="#{detail.location}" />
            </rich:column>
            <rich:column>
               <f:facet name="header">Image</f:facet>
               <h:graphicImage value="#{detail.imageUrl}" />
            </rich:column>
         </rich:dataTable>
          </a4j:outputPanel>
       </rich:column>
        </rich:columnGroup>
     </rich:dataTable>
</h:form>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top