我在使用 RichFaces 3.3.3 final 的 Rich:extendedDataTable 中遇到最大高度问题。
我希望表格有一个最大高度,如果表格没有填满这个高度(行数是动态生成的),表格就会缩小。
如果我在表格上定义了一个高度,那么无论我是否没有足够的元素来填充表格,表格都将始终是该大小。
有一些 css 可以使高度动态化:
.rich-extdt-maindiv {
height: auto !important;
}
.rich-extdt-maindiv, .extdt-innerdiv {
position: relative !important;
}
.extdt-outerdiv {
height: auto !important;
overflow: visible !important;
}
.extdt-content {
height: auto !important;
max-height: 200px;
}
(取自http://community.jboss.org/wiki/ExtendedDataTableDynamicHeightAndJIRABugRF-7488)
但是,我希望能够更改最大高度(一页上有多个不同大小的表格)。
此外,如果我使用这个 css,它会覆盖任何其他扩展数据表的所有其他高度。
我目前正在做的是这样的:
height="#{bean.listSize > 0 ? bean.listSize * 19 + 32 > 291 ? 291 : bean.listSize * 19 + 32 : 0}"
对于高度,其中 19 是行高 32 是标题高度,291 是我想要在桌子上的最大高度。
这不是一个理想的解决方案,因为我想要一个在各个行大小不同时可以工作的解决方案。
我无法使用 f:verbatim 或类似的东西进行 JavaScript 调用(请参阅如何在 RichFaces/JSF 页面中嵌入和调用 javascript 脚本),但这不是一个好的解决方案,因为设置最大高度会设置页面上每个表格的最大高度。
有人有更好的解决方案吗?
我越想弄清楚这一点,我就越相信 extendeDataTable 是有限的。我想不出解决方案,但是我注意到该程序中的表具有不同大小的行。这是一个看似常识的功能,但没有办法做到这一点。
最后一次更新:
我无法解决任何问题。我还在使用上面的那个高度函数,它很容易理解,也很容易在每页的基础上控制。“19”像素值可能需要根据您在一行中拥有的项目进行更改,以使行更厚。
使用此解决方案,我不想在单元格中换行,因为高度基于行数。这会在行尾添加一点“...”。
我添加了一个rich:toolTip(或我自己的工具提示,因为我开始怀疑richfaces),它在鼠标悬停时显示单元格中的其余内容。不是最好的解决方案,但它可以满足我们的需要。
这是您需要的 CSS:
.rich-extdt-maindiv, .extdt-innerdiv {
position: relative !important;
}
.extdt-outerdiv {
overflow: visible !important;
}
原始文件中的另一个 css 是控制高度。他们超越了它,因为高度是动态的,并用一个标签控制了最大高度。如果您不想要动态最大高度,这是一个完美的解决方案。
另一种选择是,如果每页只有一个表,则使用 jQuery 更改 .extdt-content 的最大高度。对我来说不是一个选择,因为我们每页有多个。
希望这对其他人有帮助。
height 语句不是跨浏览器兼容的。