使用实体集(实体)绑定SmartTable

时间:2015-08-13 18:56:11

标签: sapui5

我对sap.ui.comp.smarttable.SmartTable的绑定有疑问。

我有两个实体,因此还有两个实体集,A和B.

A与B具有1对n的关系,因此A的一个实例可以具有(例如)5个B关联实例。

我可以将我的SmartTable绑定到其中任何一个没有问题,但我想将它绑定到例如A(' 7')/ B,仅获取与A的实例7关联的项目。如果我在浏览器中调用该路由,则此方法正常(因此oData服务正常工作)。

但是,我无法弄清楚如何相应地绑定SmartTable。我尝试了不同字符串的各种尝试中的tableBindingPath和entitySet,但没有运气。

你们中有谁知道要实现这个目标吗?我们正在使用XML视图,但JS也没问题。

提前致谢!

2 个答案:

答案 0 :(得分:3)

由于没有代码,我会尽力回答这个问题。你需要绑定 A(' 7')/ B.
为此,智能表的EntitySet = B(基于此,智能表将为您构建列)。
TableBindingPath应该是从A到B的导航属性的名称。
但是对于这项工作,您应该在具有智能表的视图上设置模型。否则表格上没有数据。

现在智能桌上还有1个属性 1. enableAutoBinding - 如果设置为 true ,则智能表将自动将数据绑定到表格。
2.如果设置为 false ,则需要在智能表上显式调用方法rebindTable

示例代码段如下所示     SmartTable     ID =" SmartTable"      entitySet =" POItems"     TABLETYPE =" ResponsiveTable"     enableAutoBinding ="真"     editable =" true"      tableBindingPath ="项目"

这里POItems是服务中的实体的名称。 Items是POHeaders(从您的示例中===> A)到POItems(从您的示例中=====> B)的关联名称

希望这有帮助。

干杯, 威拉

答案 1 :(得分:0)

在xml视图中,您可以使用tableBindingPath来完成此操作,

<smarttable:SmartTable enableAutoBinding="true"  entitySet="B" tableBindingPath="/A('7')/C" ...

其中C是导航属性的名称。检查它不是“ A('7')/ C”还是“ / A / 7 / C”!

动态地,您可以使用setTableBindingPath方法,即:

var id = "7";
this.getView().byId('smartTable').setTableBindingPath("/A('" + id + "')/C");

此外,我不必重新绑定表。