本帖最后由 lucas.Yan 于 2024-7-26 13:34 编辑
背景
当我们在报表中做数据筛选的时候,会发现内层分组的过滤条件类型缺失了一些。那如果我们需要在内层使用类似于‘在’、前N项等过滤条件的时候该怎么做呢?
场景说明:我们需要对报表进行多级筛选,首先设置外层筛选条件支付方式为支付宝,内层使用多值参数来进行过滤。 使用步骤:我们使用Demo销售明细输出集进行测试,首先我们都以Demo销售明细创建两个数据集。 接着创建一个报表参数设置为多值数据,设置可用数据为第二个数据集的运货商字段
使用IndexOf()判断在数据过滤中使用表达式来构建过滤条件。如果数据不匹配 - {IndexOf(@报表参数1, 支付方式)} != -1
复制代码
通用方法下面这个函数是为了实现IN的功能 函数IN 需要两个参数 对象数组array,对象element 通过判断array中的元素是否存在和element元素相同的,如果存在就返回true,如果都不相同则返回false。 - /// <function name="In">
- /// <culture>
- /// <label>In</label>
- /// <syntax>Code.In(<Array>, <Element>)</syntax>
- /// <description>Checks whether array includes element.</description>
- /// <example>=Code.In(array, element)</example>
- /// </culture>
- /// </function>
- public bool In(object[] array, object element){
- return Array.Exists(array, (elem) => elem.ToString() == element.ToString());
- }
复制代码
当我们编译好自定义函数之后,就可以在报表中使用这个自定义的IN函数了。 用法和indexOf类似,不过我们可以在自定义函数中实现更多类型的需求。如NotIn、Like等函数。
|