gpt4 book ai didi

javascript - UI5 过滤同一列中的多个值

转载 作者:行者123 更新时间:2023-12-03 02:59:16 25 4
gpt4 key购买 nike

我正在尝试使用表中所有选定的项目从 odata 模型中读取数据。该表有两个键,我将它们称为 ID 和 NAME,可能我只需要其中一个键的过滤器。仅使用 1 个过滤器不会改变结果。

然后,我为所有选定的项目创建过滤器。后来它使用过滤器从模型中读取,但总是返回 1 个结果,即表中的第一个条目。

我找到了here您可以使用过滤器数组创建另一个过滤器,在过滤器上执行 AND 或 OR 操作,所以我尝试了,但没有任何改变。

var table = this.byId("table");
var items = table.getSelectedItems();
var filters = [];
for (var i = 0; i < items.length; i++) {
var item = items[i].getBindingContext().getObject();
var id = new Filter("ID", FilterOperator.Contains, item.ID);
var name = new Filter("NAME", FilterOperator.Contains, item.NAME);
filters.push(id);
filters.push(name);
}

var model = this.getOwnerComponent().getModel();
model.read("/assessments", {
filters: [new sap.ui.model.Filter(filters, false)],
success: function(odata) {
var results = odata.results;
}
}

最佳答案

根据我从你的问题中了解到的,我相信你想要实现如下目标

第 1 行 - “ID”和“姓名”

  • 或者

第 2 行 - “ID”和“姓名”

  • 或者

第 3 行 - “ID”和“姓名”

您可以通过在嵌套过滤器中的参数对象中设置 和 参数来做到这一点。

var table = this.byId("table"),
items = table.getSelectedItems(),
aFilters = [];
for (var i = 0; i < items.length; i++) {
var item = items[i].getBindingContext().getObject();
var oFilter = new Filter({
filters:[
new Filter("ID", FilterOperator.Contains, item.ID),
new Filter("NAME", FilterOperator.Contains, item.NAME)
],
and : true
})
aFilters.push(oFilter);
}

var model = this.getOwnerComponent().getModel();
model.read("/assessments", {
filters: [new sap.ui.model.Filter(aFilters, false)],
success: function(odata) {
var results = odata.results;
}
}

关于javascript - UI5 过滤同一列中的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47481099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com