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);
       },