将 SmartTable 与(实体的)实体集绑定
Posted
技术标签:
【中文标题】将 SmartTable 与(实体的)实体集绑定【英文标题】:Bind SmartTable with entityset (of an entity) 【发布时间】:2015-11-06 21:32:43 【问题描述】:我有一个关于 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 也可以。
【问题讨论】:
【参考方案1】:由于没有代码,我会尽力回答这个问题。你需要绑定 A('7')/B。 为此,智能表的 EntitySet=B(基于此,智能表将为您构建列)。 TableBindingPath 应该是从 A 到 B 的导航属性的名称。但是对于这项工作,您应该在具有 Smart Table 的视图上设置模型。否则表格上没有数据。
现在智能表中还有 1 个属性。 1. enableAutoBinding - 如果设置为true,那么智能表会自动将数据绑定到表中。 2. 如果设置为false,则需要在Smart Table上显式调用rebindTable方法
示例代码 sn-p 如下所示 智能表 id="智能表" entitySet = "POItems" tableType="响应式表" enableAutoBinding="true" 可编辑 = “真” tableBindingPath="Items"
这里的 POItems 是服务实体的名称。 Items 是从 POHeaders (===> A from your example) 到 POItems(=====> B from your example) 的关联名称
希望这会有所帮助。
干杯, 维拉
【讨论】:
谢谢!我的印象是我要么必须设置 tableBindingPath 要么设置 entitySet 而不是两者都设置。它现在按预期工作! @Veeraraghavan ...没关系我做了一个更改为 entitySet="B" 和 tableBindingPath="Items" 和 enableAutoBinding="true" 但是“7”怎么样我应该只显示数据与 A(7) 相关联。在我的 oModel 中,我得到了整套实体 A。我应该如何将特定的导航属性应用于智能表 现在 A(7) 是一个实体,它有一个关联项,您需要将其绑定到智能表。您需要做的就是将智能表所在的视图绑定到 A(7)。根据此绑定可用于智能表,并且由于表的内容是“项目”,因此将填充数据。 自动绑定时如果需要添加一些过滤器怎么办【参考方案2】:在 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");
此外,我不必重新绑定表格。
【讨论】:
以上是关于将 SmartTable 与(实体的)实体集绑定的主要内容,如果未能解决你的问题,请参考以下文章