如何使用NOT构建SAP UI5筛选器?

2020-09-13 15:10发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


如何取消sap.ui.model.Filter?

我知道例如sap.ui.model.FilterOperator" EQ"与" NE"相反,而" LT"与" GE"相反,依此类推,但是如果我有 合并多个过滤器的sap.ui.model.Filter,我想否定整个组合? 或输入代码:

 var path1 ='field1',value1 ='X';

//创建一个等效于OData的过滤器:$ filter = field1 eq'X'

 var filter1 = new Filter({
   路径:路径,
   value1:值,
   运算符:FilterOperator.EQ
 });

//否定filter1,OData等效项:$ filter = field1 ne'X':

 var negatedFilter1 = new Filter({
   路径:路径,
   value1:值,
   运算子:FilterOperator.NE
 });

 var path2 ='field2',value2 ='Y';

//创建一个等效于OData的过滤器:$ filter = field2 lt'Y'
 var filter2 = new Filter({
   路径:path2,
   值1:值2,
   运算符:FilterOperator.LT
 });

//否定filter2,等效于OData:$ filter = field2 ge'Y':
 var negatedFilter2 = new Filter({
   路径:path2,
   值1:值2,
   运算子:FilterOperator.GE
 });

//用AND组合过滤器1和2
//OData等效项:$ filter = field1 eq'X'和field2 lt'Y'

 var CombinedFilter1AndFilter2 = new Filter({
   过滤器:[filter1,filter2],
   和:正确
 });

//求和CombinedFilter1AndFilter2 
//否等于等效的日期:$ filter = not(field1 eq'X'and field2 lt'Y') ...?

我的意思是,可以,我可以单独组合取反的滤镜,但是在实际情况下,这将变得非常复杂且容易出错,因为我们必须遍历整个滤镜并对每个滤镜取一个负数。 他们。 我只是想在整个组合过滤器上设置一个" not"标志,或者,如果不可能,请将组合过滤器包装在新的Filter中,然后在其中设置一个not标志。

看过和读过,我认为不存在这样的not标志,对吗? 推荐的解决方法是什么? SAP UI5会建立这样的功能吗?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


如何取消sap.ui.model.Filter?

我知道例如sap.ui.model.FilterOperator" EQ"与" NE"相反,而" LT"与" GE"相反,依此类推,但是如果我有 合并多个过滤器的sap.ui.model.Filter,我想否定整个组合? 或输入代码:

 var path1 ='field1',value1 ='X';

//创建一个等效于OData的过滤器:$ filter = field1 eq'X'

 var filter1 = new Filter({
   路径:路径,
   value1:值,
   运算符:FilterOperator.EQ
 });

//否定filter1,OData等效项:$ filter = field1 ne'X':

 var negatedFilter1 = new Filter({
   路径:路径,
   value1:值,
   运算子:FilterOperator.NE
 });

 var path2 ='field2',value2 ='Y';

//创建一个等效于OData的过滤器:$ filter = field2 lt'Y'
 var filter2 = new Filter({
   路径:path2,
   值1:值2,
   运算符:FilterOperator.LT
 });

//否定filter2,等效于OData:$ filter = field2 ge'Y':
 var negatedFilter2 = new Filter({
   路径:path2,
   值1:值2,
   运算子:FilterOperator.GE
 });

//用AND组合过滤器1和2
//OData等效项:$ filter = field1 eq'X'和field2 lt'Y'

 var CombinedFilter1AndFilter2 = new Filter({
   过滤器:[filter1,filter2],
   和:正确
 });

//求和CombinedFilter1AndFilter2 
//否等于等效的日期:$ filter = not(field1 eq'X'and field2 lt'Y') ...?

我的意思是,可以,我可以单独组合取反的滤镜,但是在实际情况下,这将变得非常复杂且容易出错,因为我们必须遍历整个滤镜并对每个滤镜取一个负数。 他们。 我只是想在整个组合过滤器上设置一个" not"标志,或者,如果不可能,请将组合过滤器包装在新的Filter中,然后在其中设置一个not标志。

看过和读过,我认为不存在这样的not标志,对吗? 推荐的解决方法是什么? SAP UI5会建立这样的功能吗?

付费偷看设置
发送
3条回答
DafaDDDa
1楼 · 2020-09-13 15:54.采纳回答

这是一个未解决的问题 ui.model.Filter
的NOT运算符

一只江湖小虾
2楼-- · 2020-09-13 15:44

您好 Arnd vom Hofe ,感谢您的答复。

在我的问题中也许我没有明确指出,但是我的问题不是我不知道如何将过滤器重写为取反过滤器。 问题主要是在OData网址级别上做起来很简单的事情:

newFilterQueryOption =" not(" + oldFilterQueryOption +")";

...在UI5中完成时几乎变得可笑。 必须构建一些filterTransformation函数,该函数接受一个过滤器然后将其取反,并且在复合过滤器的情况下也必须递归完成此操作。

现在,假设我必须编写这样的函数:
-为了进行否定,我需要查看过滤器的私有/受保护成员。 至少,API文档没有列出允许UI检查过滤器的运算符,值和路径的任何方法
-虽然EQ可以与NEQ,LT(GTE,LT,LTE)(反之亦然)相抵消, 尚不清楚我们如何取反Contains,StartsWith和EndsWith。

基本上,在我看来ui5过滤器缺少一个非常简单和基本的功能。

hengyuye
3楼-- · 2020-09-13 16:03

您可以转换任何逻辑

不(a和b)

转换为
NOT a OR NOT b
,因此您的求反过滤器看起来像

 var negateCombinedFilter1AndFilter2 =新的过滤器({
   过滤器:[negatedFilter1,negatedFilter2],
   和:false
 }); 

一周热门 更多>

点击此处---> EasySAP.com 一起学习S4 HANA ...

相关问答