问题描述
|
我需要在“ 0”中的每个列标题中添加复选框。选中的复选框表示相应的列将包含在要从表数据生成的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>
然后,排序图标不显示。另外,我尝试将文本和复选框放在ѭ5内,例如:
<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>
这样可以显示所有内容,但是当我单击复选框时,它会触发列排序,这不是我想要的。
我已经在网上搜索的答案,但没有找到与我的问题完全相同的答案。在我单击第二个代码示例中的复选框时,是否有人知道做这种事情的更好方法,或者至少如何避免排序?
非常感谢你。
解决方法
您是否尝试过使用这种标题:
<rich:columns value=\"#{bean.columns}\" var=\"#{column}\">
<rich:column>
<f:facet name=\"header\">
<h:panelGroup>
<h:outputText value=\"#{column.title}\" />
<br />
<h:selectBooleanCheckbox value=\"#{column.selected}\" />
</h:panelGroup>
</f:facet>
<!-- Column data -->
</rich:column>
</rich:columns>
注意我现在使用RichFaces 4.0.0 / JSF 2.0,因此rich:columns不再存在,但可以用c:forEach代替。希望这可以帮助!
亚历克斯