使用 primefaces 设计 JSF 数据表的样式

发布于 2024-11-08 04:03:25 字数 485 浏览 1 评论 0原文

如何使用 CSS 设计数据表的样式?我尝试了很多解决方案,但没有任何效果。我尝试了primefaces官网和primefaces用户指南中的一个,但都不起作用。

这是我的代码:

<p:dataTable var="car" value="#{carListController.cars}">
   <p:column filterBy=”#{car.model}”>
      <f:facet name="header"> 
          <h:outputText value="Model" />
      </f:facet>
      <h:outputText value="#{car.model}" />
   </p:column>
   ...more columns 
</p:dataTable>

如果有人可以在这里帮助我,我将非常感激。

How can I style my datatable with CSS? I tried a lot of solutions, but nothing works. I tried the one in primefaces official website and primefaces user guide, but neither of them work.

Here's the code I have:

<p:dataTable var="car" value="#{carListController.cars}">
   <p:column filterBy=”#{car.model}”>
      <f:facet name="header"> 
          <h:outputText value="Model" />
      </f:facet>
      <h:outputText value="#{car.model}" />
   </p:column>
   ...more columns 
</p:dataTable>

If anyone can help me out here, I would very much appreciate it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

凉薄对峙 2024-11-15 04:03:25

我认为使用 CSS 为数据表着色的方法有很多。对我来说,它的工作原理是显示一个列表,其中每个项目也有一个 ID,所以我使用了:

<p:dataTable id="xyzDataTable" var="data" value="#{myBean.data}" 
    selectionMode="single" rowStyleClass="#{data.id mod 2 == 0 ? null : 'old'}">

CSS 文件

.old
{
  background:#fafafa;
}

现在每隔一行都有不同的颜色。

I think there are many ways to color a datatable with CSS. For me it worked by displaying a list where each item also has an ID, so i used:

<p:dataTable id="xyzDataTable" var="data" value="#{myBean.data}" 
    selectionMode="single" rowStyleClass="#{data.id mod 2 == 0 ? null : 'old'}">

the CSS File

.old
{
  background:#fafafa;
}

now every second row has a different color.

在梵高的星空下 2024-11-15 04:03:25

另一种解决方案:您可以使用 JavaScript。对于我的数据表,我想为具有焦点的元素的列和行着色。 DataTable 包含许多 inputText 元素,每个元素在获得焦点时都会调用 JavaScript 函数:

<p:inputText id="xyz" ... onfocus="colorTR(#{data.id},1);" .../>

使用 JavaScript 函数:

//colors row
function colorTR(row, cell){
  var x = document.getElementsByTagName('tr');
  var count = x.length;
  for(var i=0; i!=count; ++i){
    if(x[i].id[0] == 'p'){
      if(i%2 == 0)
        x[i].style.background = '#eeeeee';
      else
        x[i].style.background = '#fafafa';

      var zahl = parseInt(x[i].id[x[i].id.length-2] + x[i].id[x[i].id.length-1]);
      if(isNaN(zahl))
        zahl = parseInt(x[i].id[x[i].id.length-1]);
      if(zahl == row)
        x[i].style.background = '#feac5b';
      }
  }

  //colors column
  x = document.getElementsByTagName('input');
  count = x.length;
  for(var i=0; i!=count; ++i){
    if(x[i].id[0] == 'p'){
      x[i].parentNode.style.background = 'transparent';

      var zahl = parseInt(x[i].id[x[i].id.length-2] + x[i].id[x[i].id.length-1]);
      if(isNaN(zahl))
         zahl = parseInt(x[i].id[x[i].id.length-1]);
      if(zahl == cell)
         x[i].parentNode.style.background = '#feac5b';
    }
  }

  //header column
  x = document.getElementsByTagName('th');
  count = x.length;
  for(var i=0; i!=count; ++i){
    if(x[i].id[0] == 'p'){
      x[i].style.background = '#ffffff';

      var zahl = parseInt(x[i].id[x[i].id.length-2] + x[i].id[x[i].id.length-1]);
      if(isNaN(zahl))
        zahl = parseInt(x[i].id[x[i].id.length-1]);
      if(i == cell)
        x[i].style.background = '#feac5b';
      }
  }

another solution: you can use JavaScript. For my DataTable i wanted to color the column and the line of the element which has the focus. The DataTable contains many inputText elements, each of them calls that JavaScript Function if it gets the focus:

<p:inputText id="xyz" ... onfocus="colorTR(#{data.id},1);" .../>

with the JavaScript Function:

//colors row
function colorTR(row, cell){
  var x = document.getElementsByTagName('tr');
  var count = x.length;
  for(var i=0; i!=count; ++i){
    if(x[i].id[0] == 'p'){
      if(i%2 == 0)
        x[i].style.background = '#eeeeee';
      else
        x[i].style.background = '#fafafa';

      var zahl = parseInt(x[i].id[x[i].id.length-2] + x[i].id[x[i].id.length-1]);
      if(isNaN(zahl))
        zahl = parseInt(x[i].id[x[i].id.length-1]);
      if(zahl == row)
        x[i].style.background = '#feac5b';
      }
  }

  //colors column
  x = document.getElementsByTagName('input');
  count = x.length;
  for(var i=0; i!=count; ++i){
    if(x[i].id[0] == 'p'){
      x[i].parentNode.style.background = 'transparent';

      var zahl = parseInt(x[i].id[x[i].id.length-2] + x[i].id[x[i].id.length-1]);
      if(isNaN(zahl))
         zahl = parseInt(x[i].id[x[i].id.length-1]);
      if(zahl == cell)
         x[i].parentNode.style.background = '#feac5b';
    }
  }

  //header column
  x = document.getElementsByTagName('th');
  count = x.length;
  for(var i=0; i!=count; ++i){
    if(x[i].id[0] == 'p'){
      x[i].style.background = '#ffffff';

      var zahl = parseInt(x[i].id[x[i].id.length-2] + x[i].id[x[i].id.length-1]);
      if(isNaN(zahl))
        zahl = parseInt(x[i].id[x[i].id.length-1]);
      if(i == cell)
        x[i].style.background = '#feac5b';
      }
  }
惜醉颜 2024-11-15 04:03:25

例如,您可以在数据表中使用 primefaces 的 rowStyleClass
“#{o.netWt le 1980?‘现有’:空}”
这里这意味着我选择了数据表中的任何一列来检查它是否满足特定条件,如果不满足,我将显示现有的 CSS 类,否则为 null。
其中现有的是 CSS 类,例如
.现有的{
背景颜色:#0E8C3A!重要;
背景图像:无!重要;
颜色:#E0EEEE!重要;
}

you can use rowStyleClass of primefaces in the datatable for example
"#{o.netWt le 1980 ? 'existing' : null}"
here it means that i have choosen any one the columns in the datatable for checking whether it meets certain condition, if it doesnt i am showing the existing class CSS otherwise null.
where existing is a CSS Class like
.existing {
background-color: #0E8C3A !important;
background-image: none !important;
color: #E0EEEE !important;
}

秋凉 2024-11-15 04:03:25

我认为您已经尝试为您的组件分配一个类名并链接本地 CSS 表,对吧?那应该有效。

I think you already tried to assign a class name to your components and link a local CSS sheet right? that should be working.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文