Javascript Ui5 SearchField-来自多个属性名称的建议?

Javascript Ui5 SearchField-来自多个属性名称的建议?,javascript,odata,sapui5,abap,Javascript,Odata,Sapui5,Abap,我已将搜索帮助O2USERNAME作为oData服务导入ABAP。 我希望在UI5中有一个实时建议字段,但我一次只能使用一个过滤器。目标是从Bname、NameLast和NameFirst获得建议 SAP说明中指出: “或_表达式”中的所有属性必须具有相同的名称 有效:“命名eq‘Sven’或命名eq‘Hugo’” 无效:“名称eq'Sven'或年龄eq 20” 但这正是我所需要的。有没有一个解决办法 以下是我的看法: 和我的控制器: onSuggest: function (oEvent)

我已将搜索帮助
O2USERNAME
作为oData服务导入ABAP。 我希望在UI5中有一个实时建议字段,但我一次只能使用一个过滤器。目标是从
Bname
NameLast
NameFirst
获得建议

SAP说明中指出:

“或_表达式”中的所有属性必须具有相同的名称

有效:“命名eq‘Sven’或命名eq‘Hugo’”

无效:“名称eq'Sven'或年龄eq 20”

但这正是我所需要的。有没有一个解决办法

以下是我的看法:


和我的控制器:

onSuggest: function (oEvent) {
    var searchField = oEvent.getSource(),
        sQuery = searchField.getProperty("value"),
        filters1,filters2 = [],
        oBinding = searchField.getBinding("suggestionItems");
        filters2 = new Filter({
                                filters1: [
                                    new Filter("Bname", FilterOperator.Contains, sQuery.toUpperCase())
                                     , new Filter("NameLast", FilterOperator.Contains, sQuery) ,
                                     , new Filter("NameFirst", FilterOperator.Contains, sQuery) 

                                ],
                                and: false
                            });
    oBinding.filter(filters2);

    oBinding.attachEventOnce('dataReceived', function (parentEvent) {
        searchField.suggest();
    }.bind(null, oEvent));
}

来自具有正确biuld筛选器的后端的错误为:

出现以下问题:HTTP请求失败500,内部服务器错误,{“错误”:{ “代码”:“/IWBEP/CM\U MGW\U RT/032”, “信息”:{ “郎”:“德”, “值”:“Interner Fehler aufgetreten.Wenden您是系统管理员” }, “内部错误”:{ “申请”:{ “组件id”:“removedByMe”, “服务名称空间”:“我的名称空间”, “服务id”:“我的服务”, “服务版本”:“0001” }, “交易ID”:“0BE63D492E4D0210E005CF86AE1FC269”, “时间戳”:“20190621120505.9381020”, “错误解析”:{ “SAP_事务”:“对于后端管理员:在SAP网关中心系统上运行事务/IWFND/ERROR_日志,并搜索具有上述时间戳的条目以获取更多详细信息”, “SAP注释”:“请参阅SAP注释1797736了解错误分析()” }, “错误详细信息”:[{ “代码”:“/IWBEP/CX\u MGW\u TECH\u异常”, “消息”:“Interner Fehler aufgetreten.Wenden Sie sich an den Systemadministrator”, “propertyref”:“, “严重性”:“错误”, “目标”:“”} ]} } }


/IWFND/ERROR_LOG揭示了上述注意事项

每种类型的过滤器是否可能有多个文本片段? 我的意思是,你能说NameFirst包含“Sven”或“Hugo”或NameLast包含“LastName”或“LastName2”吗

如果是,我将不得不调整我的答案,如果不是:

您的
或过滤器1
或过滤器2
或过滤器3
不应该是数组,因为它们每个都包含一个过滤器对象

第二,filter.push部分有一个小错误。在创建“final”过滤器时更精确

创建包含多个筛选规则的筛选时,允许使用以下符号:

new sap.ui.model.Filter(aFilters, bAnd);
注意,这里的过滤器是一个过滤器对象数组

但是你给出了4个参数,我认为这是行不通的

回到您的代码,一旦您将orFilter数组更改为对象,请尝试以下操作:

filter.push(new sap.ui.model.Filter({
        filters: [orFilter3, orFilter2, orFilter1], // equals aFilters in previous code sample
        and: false // equals bAnd in  previous code sample
    })
);

对于每种类型的过滤器,是否可能有多个文本片段? 我的意思是,你能说NameFirst包含“Sven”或“Hugo”或NameLast包含“LastName”或“LastName2”吗

如果是,我将不得不调整我的答案,如果不是:

您的
或过滤器1
或过滤器2
或过滤器3
不应该是数组,因为它们每个都包含一个过滤器对象

第二,filter.push部分有一个小错误。在创建“final”过滤器时更精确

创建包含多个筛选规则的筛选时,允许使用以下符号:

new sap.ui.model.Filter(aFilters, bAnd);
注意,这里的过滤器是一个过滤器对象数组

但是你给出了4个参数,我认为这是行不通的

回到您的代码,一旦您将orFilter数组更改为对象,请尝试以下操作:

filter.push(new sap.ui.model.Filter({
        filters: [orFilter3, orFilter2, orFilter1], // equals aFilters in previous code sample
        and: false // equals bAnd in  previous code sample
    })
);

并且可以使用Bname O2usernameSet进行过滤,或者在Bname O2usernameSet中进行过滤?$filter=startWith(Bname,'BnameOfMe')或startWith(Bname,'BnameofSomeone'))&$format=JSONY您可以将不同的文本片段组合在一起,并且-通过此操作,我可以在Gatewa客户端中生成我不想要的实体是的,你说得对,实际上这是早期版本之一。现在筛选器是正确的,但我从后端收到一个错误:HTTP请求失败500,内部服务器错误,{“错误”:{“代码”:/IWBEP/CM_MGW_RT/032“,…}导致SAP Note 1797736–我不是这类错误的专家,您能将整个服务器错误包括在内吗?该消息可能会提供更多信息,因为出现此错误可能有多种原因:服务器关闭-后端执行的功能不正确-…后端implemetaion是导入的值Help,因此没有修改n在那里,我在问题中包含了完整的错误,可以使用Bname O2usernameSet进行过滤,也可以在Bname O2usernameSet中进行过滤?$filter=StartWith(Bname,'BnameOfMe')或StartWith(Bname,'BnameofSomeone'))&$format=JSONY您可以将不同的文本片段组合在一起,并且-通过此操作,我可以在Gatewa客户端中生成我不想要的实体是的,你说得对,实际上这是早期版本之一。现在筛选器是正确的,但我从后端收到一个错误:HTTP请求失败500,内部服务器错误,{“错误”:{“代码”:/IWBEP/CM_MGW_RT/032“,…}导致SAP Note 1797736–我不是这类错误的专家,您能将整个服务器错误包括在内吗?该消息可能会提供更多信息,因为出现此错误可能有多种原因:服务器关闭-后端执行的功能不正确-…后端implemetaion是导入的值Help,因此没有修改n在那里,我在问题中包含了全部错误