OpenUI5;将数据块加载到表

时间:2015-11-03 09:20:13

标签: javascript sapui5

昨天我问了同样的问题并得到了一个答案(我试过,见下文)。我不确定它为什么会被投票。我删除了它,并没有再次尝试,试图更清楚,并说明我到目前为止所尝试的内容。

我想要在使用sap.ui.commonssap.ui.table库的OpenUI5应用程序中显示大量数据。作为后端服务器,我使用CherryPy为我提供从SQLite数据库读取的数据(JSON)。后端的实现方式是调用应用程序从该偏移量开始提供offset和它想要的行数。我已经使用另一个框架(w2ui)这样做了。

这个逻辑我需要重新实现OpenUI5。到目前为止我尝试过的:

  • 不幸的是,当用户滚动到当前表数据的末尾时,sap.ui.table.Table不提供触发的事件。另外,我只需要从服务器向模型中请求更多数据(目前它是sap.ui.data.json.JSONMoel)。我不知道是否有可能自己创建这样的活动。

  • 分页确实有事件,当页面被更改时,我可以使用它来请求更多数据。但底部的控件(箭头,页码)仅显示当前数据。因此,如果我加载一个页面可以容纳的行数,则不会显示下一页的箭头按钮。如果我加载两页的数据,它会显示页码1,2和箭头。但是第2页上的next page箭头已禁用,因为第3页没有数据。每次添加数据时,它也会添加新的页码。只要并非所有数据都被提取,人们就不会知道实际有多少页面。

  • 我读到的第三个选项in this StackOverflow question。在这里,我不太确定这是否是我想要的。虽然问题海报与我有同样的问题。使用ODataModel,如果我理解正确,它仍会加载来自后端的所有数据,但只会呈现对用户可见的数据。我不太确定如何根据需要使用它。我不知道它会如何自动告诉我偏移量和行数。它与表模型绑定。

所以我的问题是哪些模块允许我按照描述实现服务器通信。

修改

至于选项3,根据评论我做错了。创建表后

var oTable = new sap.ui.table.Table("table", {
    visibleRowCountMode: sap.ui.table.VisibleRowCountMode.Auto,
    threshold: 50,
    toolbar: oTableToolbar
});

我按如下方式绑定表数据模型

var oModel = new sap.ui.model.odata.ODataModel("get_table_data_oui5", true);
sap.ui.getCore().setModel(oModel, "TableModel");
oTable.setModel(oModel);
oTable.bindRows("TableModel>/");

调用CherryPy公开的函数get_table_data_oui5,它接收的唯一参数是字符串$metadata(除非我添加自己的参数)。它不会收到$top$skip,也不会收到任何值。

编辑2 这些是我在Firefox和Chromium中可以看到的函数调用。除了字符串$metadata之外什么都没有被转移。我确定我在这里做错了但我不知道帽子。如果我已正确阅读,我所要做的就是将模型绑定到表格。

火狐: Output from Firefox

铬: Output from Chromium

0 个答案:

没有答案