对于遇到此问题的其他任何人 - Primfaces 可滚动仍然存在问题。我在5.1,它不工作。
只需使用一个普通的数据表,然后使用 CSS3 来让滚动工作:
https://jsfiddle.net/xuvsncr2/170/
当然不要使用 table、thead、tr 等来定位元素。而是使用 css 类,以便获得正确的数据表。
棘手的部分是,为了设置滚动窗格的大小,您需要直接定位表格周围的 div。你可以在下面看到我是如何做到的
这里有更多关于 css3 的 flexbox 的信息:https ://css-tricks.com/snippets/css/a-guide-to-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;
}