p:带有p的dataTable:具有自定义宽度的列

时间:2012-09-11 12:42:51

标签: jsf primefaces

我有一个带有p:columns标记的动态列的数据表,并希望为每列指定不同的宽度。

我的代码如下

<p:dataTable id="scheduleDataTable" value="#{scheduleMB.scheduledRecords}" var="sched" rows="10">
        <p:columns value="#{scheduleMB.columns}" var="column" columnIndexVar="colIndex" styleClass="day-column">  
            <f:facet name="header">
                #{column.header}
            </f:facet>

            #{sched[column.property]}
        </p:columns>  
    </p:dataTable>

在css文件中我有宽度

.ui-state-default .day-column{
 width: 150px !important;
}

我甚至尝试过styld =“width:150px;”它们都不起作用,使用默认值绘制列。

但我想要不同的列宽,我该怎么做。 我尝试在styleClass =“col1,col2”中指定多个css,在facet中指定

<f:facet name="style">
    #{column.size}
</f:facet>

2 个答案:

答案 0 :(得分:2)

为PrimeFaces DataTable设置列宽的官方方法是使用无单位整数定义width元素的column属性。像这样:

<p:column width="70">
    <h:outputText value="#{element.prop}" />
</p:column>

您可以使用EL让控制器定义宽度。

该建议适用于PF的3.3和3.4版本,对于旧版本可能有所不同。在过去的几个版本更新中,细节已经多次更改,因此您也可以参考migration guide

答案 1 :(得分:1)

您可以使用EL width =“#{column.width}”设置每列的宽度。您的列类需要具有width属性。

<p:dataTable id="scheduleDataTable" value="#{scheduleMB.scheduledRecords}" var="sched" rows="10">
    <p:columns value="#{scheduleMB.columns}" var="column" 
      width="#{column.width}" 
      columnIndexVar="colIndex" styleClass="day-column">  
        <f:facet name="header">
            #{column.header}
        </f:facet>

        #{sched[column.property]}
    </p:columns>  
</p:dataTable>