动态可滚动的Primefaces数据表

时间:2018-02-20 14:30:11

标签: jsf primefaces

我们有一个Primefaces数据表,它具有非固定数量的列。基本上,一些标题列包含" +"展开其他列的按钮。 这是两张显示该行为的图片: Folded column Unfolded column

这些列可以有不同的宽度(第一个显示单个数字,然后不需要很多地方,而第二个显示非常长的文本);他们每个人都有一个体重(我们目前有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;解决方案存在或者这是一个非常棘手的问题?

1 个答案:

答案 0 :(得分:0)

我终于设法解决了我的问题。我已经设置了&#34; tableStyle&#34; to&#34; table-layout:auto;&#34;,&#34; resizableColumns&#34;到&#34;真&#34;和一个分页器。我删除了每列的固定宽度。

关键是我的列可以由用户调整大小,我不能以编程方式为它们提供宽度,因为它是自动设置的。不过,这是我找到的最近的解决方案。