PrimefacesDatatableのヘッダー列にスタイルを適用する方法を知りたいのですが。 rowStyleClass属性を使用して、行のスタイルを変更することができました。ただし、ヘッダー列のスタイルを変更する方法はわかりません。サンプル例は本当に役に立ちます。以下を試してみましたが、列全体のスタイルが変わったようです
<p:column id="SelectallID" headerText="Select ID" style="text-align:center; background-color:#C6C3C6;padding:12px;">
<h:outputText>
<h:selectBooleanCheckbox id="checkbox2" value="#{car.selected}"/>
</h:outputText>
</p:column>
上記を使用すると、列全体のスタイルが変更されているようです。ただし、ヘッダー列のみのスタイルを変更したいと思います。手伝ってください。前もって感謝します。
Primefacesのデータテーブルヘッダーは、html <th>
要素を生成します。スタイル定義で要素セレクターを使用できます。
th {
color: red !important;
}
これにより、たとえば、ページ上のすべての<th>
要素のフォントの色が変更されます。
この選択が目的に対して十分に具体的でない場合は、データテーブルのIDと組み合わせることができます。
#review-table th {
color: red;
}
次のコードを使用して、すべての<p:dataTable>
のテーブルヘッダーをターゲットにできます。
.ui-datatable thead th {
background-image: none !important;
background-color: var(--primary-color) !important;
color: var(--secondary-color) !important;
}
継承されたプロパティをオーバーライドするには、!important
を使用する必要がある場合があります
EDIT:!important
の使用を回避することについての@Kukeltjeのコメントに同意します。これにより、受け入れられた回答で使用されるロジックが生成されます。
.reskinned-datatable th {
background-image: none;
background-color: var(--primary-color);
color: var(--secondary-color);
}
私はこれが古いことを知っていますが、誰かがそれを見つけた場合に備えて:
次のようにp:columnGroupを使用してp:dataTableを作成できます。
<p:dataTable id="example" value="#{bean.values}" var="value">
<p:columnGroup type="header">
<p:column headerText="column1" />
<p:column headerText="column2" styleClass="text-left"/>
<p:column headerText="column3" styleClass="text-left"/>
</p:columnGroup>
<p:column>#{value.val1}</p:column>
<p:column>#{value.val2}</p:column>
<p:column>#{value.val3}</p:column>
</p:dataTable>
ColumnGroupのスタイルはヘッダー<th>
に影響し、残りの列のスタイルは<td>
に影響します。
これがお役に立てば幸いです。