Sapui5 如何将多个筛选器传递给OData read
我遇到过这样一种情况,超过10个输入值必须作为过滤器传递到后端。是否有其他选项来创建和传递过滤器,而不是在控制器中为每个输入字段创建过滤器?您可以为每个输入创建过滤器,并将其推送到需要时使用的过滤器阵列 例如:Sapui5 如何将多个筛选器传递给OData read,sapui5,Sapui5,我遇到过这样一种情况,超过10个输入值必须作为过滤器传递到后端。是否有其他选项来创建和传递过滤器,而不是在控制器中为每个输入字段创建过滤器?您可以为每个输入创建过滤器,并将其推送到需要时使用的过滤器阵列 例如: 有关更多信息,请查看。例如,如果您想通过XML视图以声明方式控制过滤器内容,可以使用以下方法: 为所有受影响的输入分配一个“customData”属性,定义“filterProperty”和“filterOperation” 为所有受影响的输入分配相同的“fieldGroupId” 在f
有关更多信息,请查看。例如,如果您想通过XML视图以声明方式控制过滤器内容,可以使用以下方法:
xmlns:data=”http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1“
在XML中:
在JS中:
var ainput=oView.getControlsByFieldGroupId(“InputGroup”)代码>
var oFilter1 = new sap.ui.model.Filter("Input1", sap.ui.model.FilterOperator.Contains, value1);
var oFilter2 = new sap.ui.model.Filter("Input2", sap.ui.model.FilterOperator.Contains, value2);
var oFilter3 = new sap.ui.model.Filter("Input3", sap.ui.model.FilterOperator.Contains, value3);
var oFilter4 = new sap.ui.model.Filter("Input4", sap.ui.model.FilterOperator.Contains, value4);
var allFilters = new sap.ui.model.Filter([oFilter1, oFilter2, oFilter3, oFilter4], false);
var aFilters = aInputs.map(function(oInput) {
var sFilterName = oInput.data("filterName");
var sFilterOperation = oInput.data("filterOperation");
return new Filter(sFilterName, sFilterOperation, oInput.getValue());
});
//Create an array
var aFilters = [];
if (yourVal1) {
aFilters.push(new sap.ui.model.Filter("Dimension", sap.ui.model.FilterOperator.EQ, yourVal1));
}
if (yourVal2) {
aFilters.push(new sap.ui.model.Filter("Language", sap.ui.model.FilterOperator.EQ, yourVal1));
}
this.getModel().read("/YourEntitySet", {
filters: aFilters,
success: function(oData) {
// use the response as required.
},
error: function() {
}
});