我有关于primefaces数据表的问题。如您所见,列边框和标题存在对齐问题。这是一个主要的错误或我的数据表有什么问题?顺便说一句,数据表有动态列。
<p:dataTable scrollable="true" scrollWidth="100%" editable="true" editMode="cell"
var="invoiceLine" value="#{myController.invoiceLines}"
selection="#{myController.selectedInvoiceLine}" selectionMode="single" rowKey="#{invoiceLine.uuid}"
>
<p:columns value="#{myController.columns}" var="column"
styleClass="ui-editable-column" width="50"
columnIndexVar="colIndex">
//some stuff
</p:columns>
</p:dataTable>
答案 0 :(得分:11)
做一招,
Remove scrollable = true
并创建新的样式类,如
.ui-datatable-hor-scroll .ui-datatable-tablewrapper,.scrolling-div .ui-datatable-tablewrapper{
overflow: auto;
width: 100%;
padding-bottom: 5px;}
将styleClass
应用于p:datatable
,如styleClass="ui-datatable-hor-scroll"
答案 1 :(得分:3)
问题仍然存在于6.2中。 宽度在style属性中设置的另一个解决方案是替换
<p:column style="width:calc(100px)">
与
$arr_a
$arr_b
array_diff_assoc($arr_a, $arr_b)
答案 2 :(得分:1)
对于有此问题的其他人 - Primfaces可滚动仍然存在问题。我在5.1,但它无法正常工作。
只需使用普通数据表,然后使用CSS3使滚动工作:
https://jsfiddle.net/xuvsncr2/170/
当然不要使用table,thead,tr等作为目标元素。而是使用css类,以便获得正确的数据表。
棘手的部分是,为了设置滚动窗格的大小,您需要直接围绕表格定位div。您可以在下面看到我是如何做到这一点的
对于css3:https://css-tricks.com/snippets/css/a-guide-to-flexbox/
,更多关于flexbox的内容下面是我用于primefaces的css的一个例子。我刚用<div class="myCompanyScrollable thirtyEM">
.thirtyEM .ui-datatable-tablewrapper{
height: 30em;
}
.myCompanyScrollable table {
display: flex;
flex-flow: column;
height: 100%;
width: 100%;
}
.myCompanyScrollable table thead {
/* head takes the height it requires,
and it's not scaled when table is resized */
flex: 0 0 auto;
width: calc(100% - 1.05em);
display: table;
table-layout: fixed;
}
.myCompanyScrollable table tbody {
/* body takes all the remaining available space */
flex: 1 1 auto;
display: block;
overflow-y: scroll;
}
.myCompanyScrollable table tbody tr {
width: 100%;
}
.myCompanyScrollable table tbody tr {
display: table;
width: 100%;
table-layout: fixed;
}
/* decorations */
.myCompanyScrollable {
border: 1px solid black;
padding: 0.3em;
}
.myCompanyScrollable table {
border: 1px solid lightgrey;
}
.myCompanyScrollable table td, .myCompanyScrollable table th {
padding: 0.3em;
border: 1px solid lightgrey;
}
.myCompanyScrollable table th {
border: 1px solid grey;
}
答案 3 :(得分:1)
最新版本( 7.0 )中的 已解决 问题
答案 4 :(得分:-1)
尝试以下jquery代码
$('.datatableclassname').find(('div.ui-datatable-scrollable-header ')+'div.ui-dt-c').each(function(index) {
var cur_obj = $(this);
var column_num = parseInt(index+1);
$('.datatableclassname div.ui-datatable-scrollable-body tr > td:nth-child('+column_num+') > div.ui-dt-c').css('width',cur_obj.width()+'px');
});