【问题标题】:Apply a style to a specific ice:column将样式应用于特定的 ice:column
【发布时间】:2011-12-30 12:44:42
【问题描述】:

我的问题很基本,但在 Google 上找不到答案。我确实想知道我是否遗漏了有关 ice:column 组件的某些内容。

我确实使用如下代码:

<ice:panelGrid columns="3">
  <ice:column style="background-color: yellow;">
    <ice:outputText value="..." />
  </ice:column>
  <ice:column>
    // row content
  </ice:column>
  <ice:column>
    // row content
  </ice:column>

  // other rows
</ice:panelGrid>

似乎 column 组件有一个 style 和 styleClass 属性,但是 HTML 中没有呈现任何内容。

如何使用 IceFaces 将样式应用于表格的特定单元格?

提前感谢您的回答。

【问题讨论】:

    标签: css jsf-2 icefaces-2


    【解决方案1】:

    与标准 JSF &lt;h:panelGrid&gt; 一样,&lt;ice:panelGrid&gt; 有一个 columnClasses 属性,它允许您指定以逗号分隔的列类列表,这些列类随后将应用于列。此外,在标准 JSF &lt;h:panelGrid&gt; 中,不支持 &lt;h:column&gt;。这仅在 &lt;h:dataTable&gt; 中受支持。相反,&lt;h:panelGrid&gt; 的每个直接子级都被视为单个列,如果您有多个组件需要放在单个列中,则可以只是 &lt;h:outputText&gt;&lt;h:panelGroup&gt;

    所以,应该这样做:

    <ice:panelGrid columns="3" columnClasses="col1,col2,col3">
        <ice:panelGroup>row 1 col 1</ice:panelGroup>
        <ice:panelGroup>row 1 col 2</ice:panelGroup>
        <ice:panelGroup>row 1 col 3</ice:panelGroup>
    
        <ice:panelGroup>row 2 col 1</ice:panelGroup>
        <ice:panelGroup>row 2 col 2</ice:panelGroup>
        <ice:panelGroup>row 2 col 3</ice:panelGroup>
    
        ...
    </ice:panelGrid>
    

    会生成

    <table>
      <tbody>
         <tr>
           <td class="col1">row 1 col 1</td>
           <td class="col2">row 1 col 2</td>
           <td class="col3">row 1 col 3</td>
         </tr>
         <tr>
           <td class="col1">row 2 col 1</td>
           <td class="col2">row 2 col 2</td>
           <td class="col3">row 2 col 3</td>
         </tr>
         ...
       </tbody>
    </table>
    

    您可以按照通常的方式在.col1.col2.col3 类中指定样式。

    .col1 {
        background: yellow;
    }
    

    【讨论】:

    • 对,我理解不应该被接受的 (但完全有效......)。但是如何将 styleClass 设置为 元素,但仅设置其中一行?我需要在一列中突出显示一个特殊的单元格。
    • &lt;ice:column&gt; 以这种方式工作可能是 IceFaces 特有的功能。如果要在特定单元格而不是特定列上设置样式类,则需要在单元格本身上设置它。在您的示例中,这将在&lt;ice:outputText&gt; 上。如果您希望内容覆盖整个单元格,也可以设置为display: block;
    • 是的,我也想过这个。我真的不喜欢更改 for 块的显示,这不是标记的用途。或者我可以使用 outputText 而不渲染跨度并手动放置
      。但我讨厌被语言限制。正确的方法是直接在 . 上设置一个类
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签