我正在使用sap.m.Table将一些文档显示为sap.m.Dialog。用户界面如下所示:
一切都按预期工作但当我滚动到最后一个项目(增长=真)时,表格会重新渲染并移回到顶部。理想情况下,只有在刷新模型时才会发生这种情况。我正在使用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在内部刷新模型,该模型在每次数据调用后强制表重新呈现。如何避免模型刷新/重新呈现表,以便每次用户向下滚动以查看更多数据时它不会滚动到顶部。
感谢任何帮助。 谢谢。
答案 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);
....