我们有一个Primefaces数据表,它具有非固定数量的列。基本上,一些标题列包含" +"展开其他列的按钮。 这是两张显示该行为的图片:
这些列可以有不同的宽度(第一个显示单个数字,然后不需要很多地方,而第二个显示非常长的文本);他们每个人都有一个体重(我们目前有4种不同的体重)。
最后一点,列数从10到19不等。这就是屏幕的很多列。
因此,我们希望有以下行为:
我已经在这个问题上工作了几个小时......而且我还没有设法找到解决方案。
这是一个MCV示例:
我的支持bean:
public class Bean implements Serializable{
public void display3rdColumn() {
m3rdColumnDisplayed = !m3rdColumnDisplayed;
}
private boolean m3rdColumnDisplayed = false;
public boolean isM3rdColumnDisplayed() {
return m3rdColumnDisplayed;
}
public void setM3rdColumnDisplayed(boolean m3rdColumnDisplayed) {
this.m3rdColumnDisplayed = m3rdColumnDisplayed;
}
private List<Element> elements = new ArrayList<>();
public List<Element> getElements() {
return elements;
}
public void setElements(List<Element> elements) {
this.elements = elements;
}
}
JSF代码:
<p:dataTable value="#{bean.elements}"
style="text-align:center;">
<p:column headerText="1st column">
<p:outputLabel value="1"/>
</p:column>
<p:column>
<f:facet name="header">
<p:outputLabel escape="false">
2nd column
<br/>
<p:commandButton
icon="fa fa-plus"
actionListener="#{bean.display3rdColumn}"
update="@form"/>
</p:outputLabel>
</f:facet>
<p:outputLabel value="Very very long description with a lot of text - don't I deserve a lot of place?"/>
</p:column>
<p:column headerText="3rd column" rendered="#{bean.m3rdColumnDisplayed}">
<p:outputLabel value="Not that long description"/>
</p:column>
</p:dataTable>
&#34;容易&#34;解决方案存在或者这是一个非常棘手的问题?
答案 0 :(得分:0)
我终于设法解决了我的问题。我已经设置了&#34; tableStyle&#34; to&#34; table-layout:auto;&#34;,&#34; resizableColumns&#34;到&#34;真&#34;和一个分页器。我删除了每列的固定宽度。
关键是我的列可以由用户调整大小,我不能以编程方式为它们提供宽度,因为它是自动设置的。不过,这是我找到的最近的解决方案。