Ich verwende PrimeFaces 3.0-M3 und habe einen <p:dataTable>
mit zwei Spalten darin. Ich möchte, dass die erste Spalte auf einer Breite von 20 Pixeln festgelegt wird. Die andere Spalte kann den verbleibenden Speicherplatz verwenden.
Hier sind Screenshots von dem, was ich gerade bekomme:
Der erste <p:column>
scheint die style
-Einstellung zu ignorieren, deren Breite begrenzt sein sollte. Es ist viel zu groß für das kleine farbige Quadrat, das den einzigen Inhalt enthält, und dann wird die andere Spalte zu weit nach rechts geschoben.
Hier ist mehr von meinem Facelet-Code:
<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>
Kann mir jemand sagen, wie ich meinen Facelet-Code so ändern kann, dass die erste Spalte eine feste Breite von 20 Pixeln hat?
In PrimeFaces 3.0 wird dieser Stil auf den generierten inneren <div>
der Tabellenzelle angewendet, nicht auf den <td>
, wie Sie (und ich) erwarten würden. Das folgende Beispiel sollte für Sie funktionieren:
<p:dataTable styleClass="myTable">
mit
.myTable td:nth-child(1) {
width: 20px;
}
In PrimeFaces 3.5 und höher sollte es genau so funktionieren, wie Sie es programmiert und erwartet haben.
Das hat bei mir funktioniert
<p:column headerText="name" style="width:20px;"/>
Aus irgendeinem Grund funktionierte das nicht
<p:column headerText="" width="25px" sortBy="#{row.key}">
Aber das hat funktioniert:
<p:column headerText="" width="25" sortBy="#{row.key}">
Ich weiß nicht, welchen Browser Sie verwenden, aber laut w3schools.com funktionieren jetzt nth-child und nth-last-child mit MSIE 8. Ich weiß nicht über 9. http: // www .w3schools.com/cssref/pr_border-style.asp gibt Ihnen weitere Informationen.
kannst du es versuchen
<p:column width="20">
Ich habe gerade folgendes gemacht (in V 3.5) und es hat wie ein Zauber funktioniert:
<p:column headerText="name" width="20px"/>
Inline-Styling würde auf jeden Fall funktionieren
<p-column field="Quantity" header="Qté" [style]="{'width':'48px'}">
Ergänzung der Antwort von @BalusC. Sie müssen auch die Breite der Header festlegen. In meinem Fall kann css nur für die Spaltenbreite meiner Tabelle gelten.
.myTable td:nth-child(1),.myTable th:nth-child(1) {
width: 20px;
}