我正在使用Master-Detail应用程序。我有一个带有列表控件的视图,并将其与来自名为“ entityset1”的实体集的数据绑定。
Odata -> data from the entityset1
<serialno>122333</serialno>
在同一服务中,我确实有另一个称为entityset2的实体集。
Odata -> data from the entityset2
<hdata>is Active</hdata>
只有来自过滤器(/ sap / opu / odata / sap / My_SRV / entityset2?$ filter =(serialno = 122333)
的实体集2上的数据才会检索到我现在正尝试从entityset2检索值并将其绑定到列表中的一个属性。此列表已与entityset1数据绑定。
Myview.xml。
<List id="list" select="_handleSelect">
<ObjectListItem id="MAIN_LIST_ITEM" press="_handleItemPress" title="{Name}">
<attributes>
<ObjectAttribute id="ATTR1" text="{serialno}" />
<ObjectAttribute id="ATTR2" text="{entityset2/hdata}" />
</attributes>
</ObjectListItem>
</List>
Controller.js(使用以下几行进行绑定)
this.oList.bindAggregation("items", {
path: '/entityset1',
template: this.oListItem,
filters: this.searchFilters
});
var oserialnum = this.getView().getBindingContext().getObject().serialno;
var oHdata = new sap.ui.model.Filter("serialno", "EQ",oserialnum);
this.searchFilters = new sap.ui.model.Filter([oserialnum],true);
this.oList.bindAggregation("items",{
path : "/entityset2",
filters :this.searchFilters
});
但是,我在此行“ this.getView()。getBindingContext()。getObject()。serialno”上收到错误“无法读取未定义的属性'getObject'”。
有人可以建议如何从entity2中检索数据并将其绑定到列表吗?
答案 0 :(得分:1)
您无法使用该视图获取BindingContext。 Read more about binding Context-它是指向模型数据中对象的指针。
此外,serialNo(您尝试从Model检索的参数也是上下文的,即,每个行项目都不同)。
一种方法是:
onListeItemPress 列表事件
<ObjectListItem ... ... press="onListItemPress" >
在相应的控制器中
`onListItemPress:函数(oEvent){
var oserialnum = Event.getSource()。getBindingContext(“ mainODataModel”).. getProperty(“ serialNo”)`
让我知道是否有帮助。
答案 1 :(得分:1)
如果我对您的理解正确,那么您需要的是关联。
它们将允许OData服务通过将“ entityset2”与您的序列号“关联”,直接从entityset2和entityset1传递所需的数据。
如果您使用的是SAP后端和SEGW,则此博客可能会帮助您:
答案 2 :(得分:1)
在创建主从应用程序时,我遇到了类似的问题,但发现 from the SAP Forums 不可能,这很有意义,最终在后端中创建了一个单独的实体集,该实体集具有到另一个集的链接