【问题标题】:SAPUI5 - Table rerenders after data callSAPUI5 - 数据调用后重新呈现表
【发布时间】:2017-03-15 23:56:02
【问题描述】:

我正在使用 sap.m.Table 将一些文档显示为 sap.m.Dialog。UI 如下所示:

一切都按预期工作,但是当我滚动到最后一个项目(增长=真)时,表格重新呈现并移回顶部。理想情况下,只有当我刷新模型时才会发生这种情况。我正在使用 bindAggregation 将 odataModel 绑定到 UI。请看下面的sn-p(注:部分sn-p)。

var dialog = new Dialog({
  title: title,
  buttons: [
    new sap.m.Button({
      text: "{i18n>close}",
      press: function(oEvt) {
        dialog.close();
      }
    })
  ]
});

var table = new sap.m.Table({
  width: "100%",
  inset: true,
  growing: true,
  growingThreshold: 100,
  growingScrollToLoad: true
})

dialog.addContent(table);
if (!dialog.isOpen()) {
  dialog.open();
}

var oDModel = new ODataModel(kmURL, {
  json: true
});
oDModel.setDefaultBindingMode(sap.ui.model.BindingMode.OneWay);
table.setModel(oDModel);
var mParams = {
  path: "/DocumentQuerySet",
  template: template,
};
table.bindAggregation("items", mParams);

我认为 bindAggregation 会在内部刷新模型,这会在每次数据调用后强制表重新呈现。如何避免模型刷新/重新渲染表格,以便每次用户向下滚动以查看更多数据时它不会滚动到顶部。

感谢任何帮助。 谢谢。

【问题讨论】:

    标签: sapui5


    【解决方案1】:

    您可以通过将 Table 控件放置在 ScrollContainer 中来解决此问题。 ScrollContainer 将处理表格的增长特性,这会导致控件高度的变化。这将保留当前位置而不会移回顶部。

    ....
    var table = new sap.m.Table({
                width: "100%",
                inset: true,
                growing: true,
                growingThreshold: 100,
                growingScrollToLoad: true
            })
    
            var oScroll = new sap.m.ScrollContainer({
                width: "100%",
                height: "500px",
                vertical: true,
                content: table
            })
    
            dialog.addContent(oScroll);
      ....
    

    【讨论】:

    • 谢谢斯蒂芬,工作就像一个魅力
    猜你喜欢
    • 2021-06-21
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多