如何在PrimeFaces 3.0中的ap:dataTable中设置ap:列的宽度?

Jim*_*ugh 36 css datatable jsf primefaces jsf-2

我正在使用PrimeFaces 3.0-M3,我有<p:dataTable>两列.我希望第一列固定在20px的宽度.另一列可以使用留下的任何空间.

以下是我目前获得的截图:

截图1

截图2

第一个<p:column>似乎忽略了style应该限制​​宽度的设置.它的尺寸太大,不适合小的彩色方块,它是其中唯一的内容,然后另一列被推得太远.

这里有更多我的Facelet代码:

<p:dataTable
        id="dataTableExpressions"
        value="#{catconBean.userDefinedExpressionDataModel}"
        var="currentRow"
        emptyMessage="!! EMPTY TABLE MESSAGE !!"
        selection="#{catconBean.userDefinedExpressionToEdit}"
        selectionMode="single">
    <p:ajax 
            event="rowSelect" 
            listener="#{catconBean.onUserDefinedExpressionRowSelect}"
            update=":toolbarForm:catconToolbar" />
    <p:ajax 
            event="rowUnselect" 
            listener="#{catconBean.onUserDefinedExpressionRowUnselect}"
            update=":toolbarForm:catconToolbar" />

    <p:column id="paletteColor" style="width:20px;">
        <h:panelGroup 
                layout="block"
                rendered="#{not empty currentRow.paletteColor}"
                style="width:16px;height:16px;border:thin;border-style:solid;border-color:black;background-color:##{currentRow.paletteColor.RGB};" />
        <h:panelGroup 
                layout="block"
                rendered="#{empty currentRow.paletteColor}"
                style="width:16px;height:16px;border:thin;border-style:dashed;border-color:red;background-color:white;text-align:center;">
            <h:outputText value="?" style="color:red;font-weight:bold;" />
        </h:panelGroup>
    </p:column>

    <p:column id="name">
        <f:facet name="header">
            <h:outputText value="#{bundle.catcon_label_CategoryName}" />
        </f:facet>
        <h:outputText 
            value="#{currentRow.name}"
            style="#{not currentRow.definitionComplete ? 'color:red;' : ''}" />
    </p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何修改我的Facelet代码,使第一列的固定宽度为20px?

Bal*_*usC 37

在PrimeFaces 3.0中,该样式应用于生成<div>的表格单元格内部,而不是<td>像您(和我)所期望的那样.以下示例应该适合您:

<p:dataTable styleClass="myTable">
Run Code Online (Sandbox Code Playgroud)

.myTable td:nth-child(1) {
    width: 20px;
}
Run Code Online (Sandbox Code Playgroud)

在PrimeFaces 3.5及更高版本中,它应该完全按照您编码和预期的方式工作.

  • 它是...在Firefox 4.0.1下使用您的解决方案,但在IE 7下不起作用.不幸的是,IE 7是目标环境中使用的浏览器. (2认同)
  • 旧的浏览器确实不支持所有现代选择器.考虑IE7.js:http://code.google.com/p/ie7-js/或者向PF人员报告一个问题,你希望`columnClasses`回到`<p:dataTable>`就像`<h :dataTable>`有(这是我看到的第一个,但令我惊讶的是它不支持该属性)另见http://forum.primefaces.org/viewtopic.php?f=3&t=1797 (2认同)

day*_*aya 13

这对我有用

<p:column headerText="name" style="width:20px;"/>
Run Code Online (Sandbox Code Playgroud)


Jos*_*rez 5

由于某种原因,这不起作用

<p:column headerText="" width="25px" sortBy="#{row.key}">
Run Code Online (Sandbox Code Playgroud)

但这有效:

<p:column headerText="" width="25" sortBy="#{row.key}">
Run Code Online (Sandbox Code Playgroud)

  • (仍然有效:)在 Primefaces 6.1 属性中,没有单位的宽度表示 px,单位 % 表示表格宽度的百分比。 (2认同)