我正在寻找一种方法来实现一个扩展功能的Richfaces数据表的行。用户将单击位于Datatable第一列(每行)的"+"链接,该行将"展开"(意味着新文本将显示在当前行和下一个之间)。
我有工作,唯一的问题是,在展开的视图中的所有信息都显示在该行的第一列部分。我要做的是在整行中显示"展开"的文本(好像"展开"的文本行是不被列分开)。
有什么建议吗?我对jsf/richfaces有点陌生,所以任何示例代码都会很感激。
您可以使用rich:column组件上的breakBefore属性来实现这一点。RF演示页面上有一个使用它的示例。
如果您在最后一列定义了breakBefore属性,它将为您工作。一个例子:
<rich:dataTable id="mytbl" value="#{mybean.mydata}" var="row">
<rich:column>
<a4j:commandLink reRender="mytbl">
<h:graphicImage value="#{row.toggleImage}"></h:graphicImage>
<a4j:actionparam name="shown" value="#{not row.expand}" assignTo="#{row.expand}"/>
</a4j:commandLink>
</rich:column>
<rich:column>
<f:facet name="header">col 2</f:facet>
<h:outputText value="#{row.col2}"/>
</rich:column>
<rich:column breakBefore="true">
spans all the other columns
</rich:column>
</rich:dataTable>
一种方法是使用JQuery特性。
演示链接http://jsfiddle.net/BU28E/1/。
这里的一个额外开销是您需要检查rich:dataTable如何呈现为Html并为jQuery提供DOM模型。在richfaces中拥有这样的功能有点棘手,它需要一些复杂的解决方案。