Sapui5 如何将多个筛选器传递给OData read

Sapui5 如何将多个筛选器传递给OData read,sapui5,Sapui5,我遇到过这样一种情况,超过10个输入值必须作为过滤器传递到后端。是否有其他选项来创建和传递过滤器,而不是在控制器中为每个输入字段创建过滤器?您可以为每个输入创建过滤器,并将其推送到需要时使用的过滤器阵列 例如: 有关更多信息,请查看。例如,如果您想通过XML视图以声明方式控制过滤器内容,可以使用以下方法: 为所有受影响的输入分配一个“customData”属性,定义“filterProperty”和“filterOperation” 为所有受影响的输入分配相同的“fieldGroupId” 在f

我遇到过这样一种情况,超过10个输入值必须作为过滤器传递到后端。是否有其他选项来创建和传递过滤器,而不是在控制器中为每个输入字段创建过滤器?

您可以为每个输入创建过滤器,并将其推送到需要时使用的过滤器阵列

例如:


有关更多信息,请查看。

例如,如果您想通过XML视图以声明方式控制过滤器内容,可以使用以下方法:

  • 为所有受影响的输入分配一个“customData”属性,定义“filterProperty”和“filterOperation”
  • 为所有受影响的输入分配相同的“fieldGroupId”
  • 在filter按钮触发器上,通过“getControlsByFieldGroupId”方法获取所有输入,并通过“data”函数调用使用每个输入的自定义数据来构造过滤器
  • 要使用自定义数据,请将命名空间包含到视图中:
    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() {
    
                }
            });