【问题标题】:How to apply style to a PrimeFaces dataTable?如何将样式应用于 PrimeFaces 数据表?
【发布时间】:2013-11-12 05:33:59
【问题描述】:

最初,我有一个 JSF 数据表 2.0,如下所示:

<h:dataTable value="#{bean.items}" var="item" styleClass="table table-hover">

看起来像这样:

我想使用行选择,所以我切换到 PrimeFaces 4.0 数据表:

<p:dataTable value="#{bean.items}" var="item" styleClass="table table-hover"
    rowKey="#{item.id}" selection="#{bean.selectedItem}" selectionMode="single">

看起来像这样:

但是,我的样式类 tabletable-hover 没有被应用。这是如何引起的,我该如何解决?

【问题讨论】:

标签: css jsf jsf-2 primefaces datatable


【解决方案1】:

获取 Primefaces 版本的 Primefaces 用户指南here
在该文档中,您将了解如何在 Skinning 标题下覆盖每个组件的样式。
例如:
以下是p:outputLabel的换肤

如果你想改变颜色,我会使用我的 CSS,因为它适用于所有 p:outputLabels。

.ui-outputlabel{
color:blue;
}   

如果您只想更改一个特定 p:outputLabel 的样式,您可以像这样使用

<div class="myLabel">
   <p:outputLabel value="This is Demo" />
</div>

那么 CSS 会是这样的:

.myLabel .ui-outputlabel{
    color:blue;
}

【讨论】:

  • 谢谢,但是我用的是 Bootstrap,没有更快的方法吗?
  • 这没有回答问题。另外,链接无效。
【解决方案2】:

嗯...不是tableStyleClass-属性,必须是table table-striped吗?

你只使用了styleClass

【讨论】:

    【解决方案3】:

    在 primefaces 中,基本样式是 jquery 的控制器。您可以更改 dataTable 样式更改 dataTable 的主题 css 样式。如果您想使用 jquery themeroller 即时更改样式,请检查此链接-http://www.datatables.net/styling/themes

    下面是负责 dataTable 的 css 段-根据您的需要更改并添加到您的 css 文件中

    .ui-datatable table{
    	border-collapse:collapse;width:100%;
    }
    .ui-datatable .ui-datatable-header,.ui-datatable .ui-datatable-footer{
    	text-align:center;padding:4px 10px;
    }
    .ui-datatable .ui-datatable-header{
    	border-bottom:0px none;
    }
    .ui-datatable .ui-datatable-footer{
    	border-top:0px none;
    }
    .ui-datatable thead th, .ui-datatable tfoot td{
    	text-align:center;
    }
    .ui-datatable thead th,.ui-datatable tbody td,.ui-datatable tfoot td{
    	padding:4px 10px;
    	overflow:hidden;
    	white-space:nowrap;
    	border-width:1px;
    	border-style:solid;
    }
    .ui-datatable tbody td{
    	border-color:inherit;
    }
    .ui-datatable .ui-sortable-column{
    	cursor:pointer;
    }
    .ui-datatable div.ui-dt-c{
    	position:relative;
    }
    .ui-datatable .ui-sortable-column-icon{
    	display:inline-block;
    	margin:-3px 0px -3px 2px;
    }
    .ui-datatable .ui-column-filter{
    	display:block;
    	width:100px;
    	margin:auto;
    }
    .ui-datatable .ui-expanded-row{
    	border-bottom:0px none;
    }
    .ui-datatable .ui-expanded-row-content{
    	border-top:0px none;
    }
    .ui-datatable .ui-row-toggler{
    	cursor:pointer;
    }
    .ui-datatable tr.ui-state-highlight{
    	cursor:pointer;
    }
    .ui-datatable .ui-selection-column .ui-chkbox-all{
    	display:block;
    	margin:0px auto;
    	width:16px;
    	height:16px;
    }
    .ui-datatable-scrollable table{
    	table-layout:fixed;
    }
    .ui-datatable-scrollable-body{
    	overflow:auto;
    }
    .ui-datatable-scrollable-header,.ui-datatable-scrollable-footer{
    	overflow:hidden;
    	border:0px none;
    }
    .ui-datatable-scrollable .ui-datatable-scrollable-header,.ui-datatable-scrollable .ui-datatable-scrollable-footer{
    	position:relative;
    }
     .ui-datatable-scrollable .ui-datatable-scrollable-header td{
    	font-weight:normal;
    }
    .ui-datatable-scrollable-body::-webkit-scrollbar{
    	-webkit-appearance:none;
    	width:15px;
    	background-color:transparent;
    }
    .ui-datatable-scrollable-body::-webkit-scrollbar-thumb{
    	border-radius:8px;
    	border:1px solid white;
    	background-color:rgba(194,194,194,.5);
    }
    .ui-datatable .ui-datatable-data tr.ui-state-hover{
    	border-color:inherit;
    	font-weight:inherit;
    	cursor:pointer;
    }
    .ui-datatable .ui-paginator,.ui-datatable .ui-paginator{
    	padding:2px;
    }
    .ui-column-dnd-top, ui-column-dnd-bottom{
    	display:none;
    	position:absolute;
    }
    .ui-column-dnd-top .ui-icon, ui-column-dnd-bottom .ui-icon{
    	position:absolute;
    	top:-4px;
    }
    /* InCell Editing */.ui-datatable .ui-cell-editor-input{
    	display:none;
    }
    .ui-datatable .ui-row-editing .ui-cell-editor .ui-cell-editor-output{
    	display:none;
    }
    .ui-datatable .ui-row-editing .ui-cell-editor .ui-cell-editor-input{
    	display:block;
    }
    .ui-datatable .ui-row-editor span{
    	cursor:pointer;
    	display:inline-block;
    }
    .ui-datatable .ui-row-editor .ui-icon-pencil{
    	display:inline-block;
    }
    .ui-datatable .ui-row-editing .ui-row-editor .ui-icon-pencil{
    	display:none;
    }
    .ui-datatable .ui-row-editor .ui-icon-check,.ui-datatable .ui-row-editor .ui-icon-close{
    	display:none;
    }
    .ui-datatable .ui-row-editing .ui-row-editor .ui-icon-check,.ui-datatable .ui-row-editing .ui-row-editor .ui-icon-close{
    	display:inline-block;
    }
    .ui-datatable .ui-datatable-data tr.ui-row-editing td.ui-editable-column,.ui-datatable .ui-datatable-data td.ui-cell-editing{
    	padding:0;margin:0;
    }
    /*resizer */.ui-datatable .ui-column-resizer{
    	width:8px;height:20px;
    	padding:0px;cursor:col-resize;
    	background-image:url("/ScraperOnWeb/javax.faces.resource/spacer/dot_clear.gif.jsf?ln=primefaces");
    	margin:-4px -10px -4px 0px;
    	float:right;
    }
    .ui-datatable .ui-filter-column .ui-column-resizer{
    	height:45px;
    }
    .ui-datatable .ui-column-resizer-helper{
    	width:1px;
    	position:absolute;
    	z-index:10;
    	display:none;
    }
    .ui-datatable-resizable{
    	padding-bottom:1px;/*fix for webkit overlow*/overflow:auto;
    }
    .ui-datatable-resizable table{
    	table-layout:fixed;
    }
    .ui-datatable-rtl{
    	direction:rtl;
    }
    .ui-datatable-rtl.ui-datatable thead th, .ui-datatable-rtl.ui-datatable tfoot td{
    	text-align:right;
    }

    【讨论】:

    【解决方案4】:

    您可以根据 Primefaces 用户指南根据您使用的 Prime Faces 版本更改样式。例如对于数据表,下一张图片告诉您类和适用于哪个组件。 您可以在此处查看最新版本 6.2 的用户指南

    https://www.primefaces.org/docs/guide/primefaces_user_guide_6_2.pdf

    我发布了一个示例来说明我如何从 https://www.primefaces.org/showcase/ui/data/datatable/basic.xhtml 修改数据表展示的 css,效果很好。

    body {
    background-color: #221F4B;
    }
    
    .ui-datatable {
        margin: 5% 8% 0 8%;
        text-align: center;
    }
    
    .ui-datatable thead th {
        color: #221F4B;
    }
    
    .ui-datatable tbody tr {
        height: 5rem;
    }
    
    .ui-datatable-even {
        background-color: #DFDFDF;
        color: #221F4B;
    }
    
    .ui-datatable-odd {
        background-color: #302C6C;
        color: #A09FB2;
    }
    
    @media screen and (min-width: 769px) {
        .ui-datatable {
            margin: 5% 20% 0 20%;
        }
    }
    

    我希望它可以帮助某人。亲切的问候!

    【讨论】:

      【解决方案5】:

      我正在使用 primefaces 6.0

      dataTable 中有选项 tableStyle,你可以使用你在 style 中使用的所有东西 例如:

      tableStyle="font-family: sans-serif; border:none;font-size:  small;padding:1px; background-color: #EAF7FC; background:#EAF7FC"
      

      所以 dataTable 会是这样的

       <p:dataTable id="tbl" var="fmlist" value="#{testmb.fontList}"
                           paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {Exporters}"
                           paginator="true" rows="25" style="margin-bottom:20px" scrollable="true"  draggableRows="false"  cellSeparator="true"  scrollHeight="330" 
                           tableStyle="font-family: sans-serif; border:none;font-size:  small;padding:1px; background-color: #EAF7FC; background:#EAF7FC" >
      

      【讨论】:

        猜你喜欢
        • 2016-11-23
        • 1970-01-01
        • 2013-03-12
        • 1970-01-01
        • 2013-03-14
        • 2019-09-13
        • 2018-10-10
        • 1970-01-01
        • 2013-04-24
        相关资源
        最近更新 更多