SAPUI5 - 数据调用后表重新呈现

时间:2017-03-15 23:56:03

标签: sapui5

我正在使用sap.m.Table将一些文档显示为sap.m.Dialog。用户界面如下所示: enter image description here

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



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在内部刷新模型,该模型在每次数据调用后强制表重新呈现。如何避免模型刷新/重新呈现表,以便每次用户向下滚动以查看更多数据时它不会滚动到顶部。

感谢任何帮助。 谢谢。

1 个答案:

答案 0 :(得分: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);
  ....