我对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也没问题。
提前致谢!
答案 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");
此外,我不必重新绑定表。