作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 SAP UI5 开发一个主细节 Fiori 应用程序。由于详细信息包含 40 多列,因此我为 master 和 detail 制作了单独的 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
和
filter2
?我已经尝试过,但它不起作用。
filters : [ filter1, filter2 ],
json: true,
useBatch: false
我很擅长 ABAP,但不是 SAPUI5 专家。我处于学习阶段。
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");
但这似乎不太可能。
最佳答案
sap.ui.model.Filter
的目的类通常用于将过滤器应用于 UI 上的列表。例如,如果您有一个项目列表,并且您希望将该列表限制为满足特定条件的项目子集。
但是您在这里所拥有的似乎是一个经典的主从场景,您有一个项目列表,然后当用户选择一个时,会显示有关该 的更多信息一个 元素。
这种情况的通常解决方案是将完整模型分配给详细 View ,然后使用 element binding (也称为“上下文绑定(bind)”)在 View 上告诉它要显示哪个项目。
当项目的来源是单击已经具有元素绑定(bind)的元素时,您实际上可以从单击事件中检索正确的绑定(bind)路径并将其应用于您的详细信息 View 。
From one of the official demos :
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
组成的 key 进行访问。和
laufd
.这是由以下决定的:
get_entity
的ABAP实现该 oData 服务的数据提供者类。 关于odata - 如何在详细信息页面上绑定(bind)实体对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62949276/
我是一名优秀的程序员,十分优秀!