将 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 与(实体的)实体集绑定的主要内容,如果未能解决你的问题,请参考以下文章

通过 coredata 实体绑定注释

WPF XAML - 将数据网格列绑定到外键(数据集)

弱实体的属性

NSTableView 内的 NSCollectionView(与相关实体绑定)

如何将同一个xib文件绑定到不同的核心数据实体

DataGrid 数据绑定与 ADO.net 实体数据模型