JSF dataTable重新渲染失去了CSS样式

时间:2011-01-31 18:50:00

标签: css jsf rerender

我有一个dataTable,当它通过正常(非ajax)请求/响应周期呈现时,可以按需运行。

我定义了一种样式,即将背景颜色和填充应用于表格的第一行:

.myTable tr:first-child td {
  padding-top: 25px;
  background-color: yellow;
}

正如我上面提到的,当通过典型的请求/响应加载时,填充和背景颜色看起来很完美。但是,有一些操作可能导致通过AJAX重新呈现此表。当发生这种情况时,表格被正确重新加载(它的数据),但不重新应用上述样式。

由于在使用dataTable组件时无法专门为第一行分配CSS类。所以,我使用上面的CSS选择器来获取第一行。有没有人曾经处理过这样的问题?我唯一的选择是尝试在ALL的oncomplete中使用jQuery ...这可能是许多不同的地方......可以触发表重新呈现的动作?

我的问题是我试图避免使用richfaces表组件以提高速度,我需要让表可以滚动。所以,我使用浏览器特定的CSS解决方案来srcoll表体并保持标头静态。主要的问题是,我需要表格的第一行有一个顶部填充值,将其推到表格标题的固定位置下方。

1 个答案:

答案 0 :(得分:2)

由于您只重新渲染dataTable,因此会应用表的默认样式。

您还必须使用dataTable重新呈现样式代码,这可能会解决您的问题。

尝试下面的代码并重新渲染outputPanel而不是dataTable:

<a4j:outputPanel>
    <h:dataTable>
            //Data
    </h:dataTable>
    <style>
       .myTable tr:first-child td {
          padding-top: 25px;
          background-color: yellow;
        }
    </style>
</a4j:outputPanel>