【发布时间】:2011-05-30 13:47:50
【问题描述】:
我需要为<rich:dataTable> 中的每个列标题添加复选框。选中的复选框意味着相应的列将包含在要从表格数据生成的 pdf 报告中。附加要求是:列必须是可排序的,并且我必须能够混合使用 <rich:column> 和 <rich:columns> 标记。
我尝试了几种不同的方式来实现这一点。如果我像这样使用<rich:columnGroup>:
<rich:dataTable>
<f:facet name="header">
<rich:columnGroup>
<rich:column sortBy="#{bean.foo}">
<h:outputText value="bar"/>
<h:selectBooleanCheckbox value=.../>
</rich:column>
<rich:columns ...>
<h:outputText value="bar"/>
<h:selectBooleanCheckbox value=.../>
</rich:columns>
</rich:columnGroup>
</f:facet>
<rich:column>
<h:outputText value="#{bean.baz}"/>
</rich:column>
<rich:columns value=... var=...>
<h:outputText value="#{bean.foobar}"/>
</rich:columns>
</rich:dataTable>
然后排序图标不显示。或者,我尝试将文本和复选框放在 <h:panelGroup> 中,例如:
<rich:dataTable>
<rich:column sortBy="#{bean.foo}">
<f:facet name="header">
<h:panelGroup layout="block">
<h:outputText value="bar"/>
<h:selectBooleanCheckbox value=.../>
</h:panelGroup>
</f:facet>
<h:outputText value="#{bean.baz}"/>
</rich:column>
<rich:columns ...>
<f:facet name="header">
<h:panelGroup layout="block">
<h:outputText value="bar"/>
<h:selectBooleanCheckbox value=.../>
</h:panelGroup>
</f:facet>
<h:outputText value="#{bean.foobar}"/>
</rich:columns>
</rich:dataTable>
这样显示所有内容,但是当我单击复选框时,它会触发列排序,这不是我想要的。
我在网上搜索了有关该问题的答案,但没有发现与我的问题完全一样的问题。有谁知道更好的方法来做这样的事情,或者至少在我点击第二个代码示例中的复选框时如何避免排序?
非常感谢。
【问题讨论】: