如何在详情页面绑定实体对象

2023-12-03

我正在使用 SAP UI5 开发一个主细节 Fiori 应用程序。由于详细信息包含 40 多个列,因此我为主表和详细信息制作了单独的 OData 服务。

在母版页中,数据正确输入。现在我的任务是,在任何表格行上,当用户单击“详细信息”时,将打开下一页,其中包含基于的详细信息主表的两个键值.

我在详细信息页面的变量中得到了两个键,如下所示,它工作正常:

var spayid = jQuery.sap.getUriParameters().get("payid");
var spaydt = jQuery.sap.getUriParameters().get("paydt");

接下来,我创建了两个过滤器,如下所示,它们也工作正常。

var filter1 = new Filter({
  path: "Laufi",
  operator: FilterOperator.EQ,
  value1: spayid
});
var filter2 = new Filter({
  path: "Laufd",
  operator: FilterOperator.EQ,
  value1: spaydt
});

现在我正在调用 OData 服务,它也工作正常:

var oODataModel = new ODataModel("proxy/http/FIORI-DEV.abc.com:8000/sap/opu/odata/sap/ZASA_FI_pay_D_SRV?sap-client=100", {
  json: true,
  useBatch: false
});
this.getView().setModel(oODataModel);

我现在不知道如何过滤数据。上面应该包含什么,以便它根据我的过滤器过滤数据filer1 and filter2?我尝试过以下操作,但它不起作用。

  filters : [ filter1, filter2 ],
  json: true,
  useBatch: false

我非常擅长ABAP,但不是SAPUI5 专家。我正处于学习阶段。

首先,我想在 OData 服务上传递参数,以便只获取所需的数据。意味着我的 OData 调用应该是这样的:

new ODataModel("proxy/http/FIORI-DEV.abc.com:8000/sap/opu/odata/sap/ZASA_FI_PAYMENT_D_SRV/PdetailSet(Laufi= spayid, Laufd = spaydt)?sap-client=100");

但这似乎不太可能。

第二个选项是我将获取 OData 服务中的全部详细信息,然后在绑定到表期间应用过滤器。


目的sap.ui.model.Filter类通常用于将过滤器应用于 UI 上的列表。例如,如果您有一个项目列表,并且希望将该列表限制为满足特定条件的项目子集。

但这里似乎是一个经典的主从场景,其中您有一个项目列表,然后当用户选择一个项目时显示有关该项目的更多信息one item.

这种情况的通常解决方案是将完整模型分配给详细视图,然后使用元素绑定(也称为“上下文绑定”)在视图上告诉它要显示哪个项目。

当项目的来源是对已经具有元素绑定的元素的单击时,您实际上可以从单击事件中检索正确的绑定路径,并将其应用到您的详细视图。

来自官方演示之一:

onItemSelected: function(oEvent) {
    var oSelectedItem = oEvent.getSource();
    var oContext = oSelectedItem.getBindingContext("products");
    var sPath = oContext.getPath();
    var oProductDetailPanel = this.byId("productDetailsPanel");
    oProductDetailPanel.bindElement({ path: sPath, model: "products" });
}

当您没有任何方便的方法来获取元素路径时,您必须自己构建一个:

var detailPanel = this.getView().byId("idOfDetailPanel");
detailPanel.bindElement("PdetailSet(Laufi = " + spayid +", Laufd = " + spaydt + ")");

当然,后一个代码片段假设 oData 服务实际上支持使用由以下组成的密钥进行访问:laufi and laufd。这是由以下因素决定的:

  • SAP Gateway Service Builder(事务SEGW)中实体类型关键字段的定义
  • 该方法的ABAP实现get_entity该 oData 服务的数据提供者类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在详情页面绑定实体对象 的相关文章

随机推荐