Как установить ширину столбца p: в p: dataTable в PrimeFaces 3.0?
Я использую PrimeFaces 3.0-M3, и у меня есть <p:dataTable>
с двумя столбцами в нем. Я хочу, чтобы первый столбец был зафиксирован шириной 20 пикселей. В другом столбце можно использовать любое свободное пространство.
Вот скриншоты того, что я сейчас получаю:
![screenshot 1]()
![screenshot 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>
Может ли кто-нибудь сказать мне, как изменить мой код Facelet, чтобы первый столбец имел фиксированную ширину 20 пикселей?
Ответы
Ответ 1
В PrimeFaces 3.0 этот стиль применяется к генерируемому внутреннему <div>
ячейки таблицы, а не к <td>
, как вы ожидали (и я). Следующий пример должен работать для вас:
<p:dataTable styleClass="myTable">
с
.myTable td:nth-child(1) {
width: 20px;
}
В PrimeFaces 3.5 и выше он должен работать точно так, как вы закодированы и ожидаете.
Ответ 2
Это сработало для меня
<p:column headerText="name" style="width:20px;"/>
Ответ 3
Я не знаю, какой браузер вы используете, но, согласно w3schools.com, nth-child и nth-last-child теперь работают на MSIE 8. Я не знаю о 9. http://www.w3schools.com/cssref/pr_border-style.asp даст вам больше информации.
Ответ 4
По какой-то причине это не работало
<p:column headerText="" width="25px" sortBy="#{row.key}">
Но это сработало:
<p:column headerText="" width="25" sortBy="#{row.key}">
Ответ 5
можете попробовать
<p:column width="20">
Ответ 6
Я просто сделал следующее (в V 3.5), и он работал как шарм:
<p:column headerText="name" width="20px"/>
Ответ 7
Дополнение к ответу @BalusC. Вам также необходимо установить ширину заголовков. В моем случае ниже css может применяться только к ширине столбца таблицы.
.myTable td:nth-child(1),.myTable th:nth-child(1) {
width: 20px;
}
Ответ 8
В перформатах 6.1 используйте атрибут colspan.
<p:column headerText="Status" colspan="50" style="text-align:left">