我一直在尝试使用核心JSF实现这个展开/折叠表行的功能,而且我还必须保留排序。在核心JSF中有什么方法可以实现这个功能吗?
ymdaylpp1#
如果你坚持只使用引用实现,那么你就不能使用嵌套的h:dataTable和/或h:panelGroup以及一个 * 好 * 的CSS来使它很好地对齐。然后你可以聪明地使用JavaScript来显示/隐藏行细节。下面是一个基本的启动示例:
h:dataTable
h:panelGroup
<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):
toggleDetails()
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'; } }
vaj7vani2#
我不认为您可以使用“核心”JSF(我假设您的意思是只使用参考实现)来实现这一点。据我所知,您可以使用RichFacesx 1 e0f1x完成子表你也可以用IceFaces做类似的事情--参见component showcase(它在Table -〉Expandable Table下)。然而,这两种方法都需要你添加和设置另一个库(RichFaces或IceFaces),而这可能不是你想要的。
os8fio9y3#
带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>
3条答案
按热度按时间ymdaylpp1#
如果你坚持只使用引用实现,那么你就不能使用嵌套的
h:dataTable
和/或h:panelGroup
以及一个 * 好 * 的CSS来使它很好地对齐。然后你可以聪明地使用JavaScript来显示/隐藏行细节。下面是一个基本的启动示例:
toggleDetails()
函数如下所示(注意,它考虑JSF生成的客户端ID):vaj7vani2#
我不认为您可以使用“核心”JSF(我假设您的意思是只使用参考实现)来实现这一点。
据我所知,您可以使用RichFacesx 1 e0f1x完成子表
你也可以用IceFaces做类似的事情--参见component showcase(它在Table -〉Expandable Table下)。然而,这两种方法都需要你添加和设置另一个库(RichFaces或IceFaces),而这可能不是你想要的。
os8fio9y3#
带RichFaces的简单可扩展表
我们可以用RichFaces做简单的可扩展表,代码如下...