Sapui5 sap.ui.table.table“;VisibleRowCountMode.Auto“;模式不起作用
我在设置表的行数以自动填充其封装容器的可用状态时遇到问题 ,将Sapui5 sap.ui.table.table“;VisibleRowCountMode.Auto“;模式不起作用,sapui5,Sapui5,我在设置表的行数以自动填充其封装容器的可用状态时遇到问题 ,将visibleRowCountMode属性设置为sap.ui.table.visibleRowCountMode.Auto应将表格呈现为 “[…]自动填充周围容器的高度。 visibleRowCount属性会相应地自动更改 行需要相同的高度,否则自动模式并不总是有效 正如所料。” 我使用了以下代码: var oTable = new sap.ui.table.Table( { rowHeight : 30,
visibleRowCountMode
属性设置为sap.ui.table.visibleRowCountMode.Auto
应将表格呈现为
“[…]自动填充周围容器的高度。
visibleRowCount属性会相应地自动更改
行需要相同的高度,否则自动模式并不总是有效
正如所料。”
我使用了以下代码:
var oTable = new sap.ui.table.Table( {
rowHeight : 30,
height : "100%",
// The below property is seemingly ignored... What did I do wrong?
visibleRowCountMode : sap.ui.table.VisibleRowCountMode.Auto
});
…但正如您在这个jsbin示例中看到的,它只显示默认的10行,当然不会“相应地更改visibleRowCount属性”:-(
有人有办法吗?
提前谢谢
=====================
编辑:多亏了@matz3下面的答案,我最终解决了这个问题
将周围的容器DIV设置为100%似乎被忽略。但是,将其设置为固定高度效果很好。但我真正想要的是,如果用户调整窗口大小,则需要相应调整可用行数。因此,将其设置为固定高度不是一个选项
然而,诀窍在于一些额外的CSS:不仅DIV需要设置为100%高度,BODY和HTML(!!)都需要将高度设置为100%:
html, body {
height: 100%
}
div#uiArea {
height: 100%
}
现在,表格跨越了可用视口的整个高度,调整窗口大小可以很好地调整表格。请参见此处的最终工作解决方案:
Matz3,谢谢你的帮助
[…]自动填充周围容器的高度[…]
您周围的容器就是视图,因此您还必须将其高度设置为一个值(例如100%)
并且您的视图将被设置为uiArea div,因此此视图还需要一个高度(例如500px)
有了这些更改,现在CSS黑客是一种肮脏的方式。在我的应用程序中,我使用将visibleRowCount绑定到Array.length 例如,如果有包含此数据的模型:
[{firstName: 'John', lastName: 'Smith',
{firstName: 'David', lastName: 'Ericsson'}]
可以像这样绑定到数组属性长度:
var oTable = new sap.ui.table.Table({
visibleRowCount : '{/length}'
})
我也有同样的问题。我用这种方式“解决”了这个问题。这并不完美,但比UI5调整大小要好
_resizeTableRow: function () {
var oTable = this.getView().byId("referenceTabId");
var sTop = $('#' + oTable.getId()).offset().top;
var sHeight = $(document).height();
//if there a row, you can take the row Height
//var iRowHeight = $(oTable.getAggregation("rows")[0].getDomRef()).height();
var iRowHeight = 40;
var iRows = Math.trunc((sHeight - sTop ) / iRowHeight);
oTable.setVisibleRowCount(iRows);
},
其他选项是将表放入sap.ui.layout.Splitter:
啊,我明白了……我希望“如果我调整窗口大小,表的可见行数也会相应调整”这句话能带来更多好处…然而,一开始似乎DIV需要一个固定的高度,因为将其设置为100%并没有反映出来。然而,我也找到了一个解决方案,我将它添加到下面。但是,由于您引导我朝着正确的方向解决我的问题,我已将您的问题标记为正确:)是的,在我的mvc中使用height=“100%”即可节省一天,谢谢@matz3.Hi Nikolay,回答得很好,虽然这不是我想要的——我想要的是屏幕高度决定的行数,而不是模型中的项目数——但这在其他情况下肯定很有用,因此值得我投票:)
var oTable = new sap.ui.table.Table({
visibleRowCount : '{/length}'
})
_resizeTableRow: function () {
var oTable = this.getView().byId("referenceTabId");
var sTop = $('#' + oTable.getId()).offset().top;
var sHeight = $(document).height();
//if there a row, you can take the row Height
//var iRowHeight = $(oTable.getAggregation("rows")[0].getDomRef()).height();
var iRowHeight = 40;
var iRows = Math.trunc((sHeight - sTop ) / iRowHeight);
oTable.setVisibleRowCount(iRows);
},