一文读懂-如何动态设置列表过滤条件原创
金蝶云社区-犹豫
犹豫
13人赞赏了该文章 4476次浏览 未经作者许可,禁止转载编辑于2021年12月23日 09:14:03

在单据开发的时候,列表过滤经常需要增加多个常用条件,有些过滤条件本身也有关联关系,但是列表没有做联动过滤,导致我们在进行数据过滤时可能会做一些无用功。例如:某张单据包含组织和项目两个基础资料字段,两个字段同时增加在常用过滤条件上,如下图所示

image.png

项目基础资料本身与组织存在关联关系,如果我们想要根据组织字段对项目字段的过滤条件进行过滤该如何实现,今天就给大家介绍一下。

image.png

首先创建一张单据,增加组织(edge_orgfield)、项目基础资料(edge_basedatafield)字段

image.png

创建完成后把组织以及项目设置为常用过滤条件并新增几条数据

image.png

接下来就是用插件让两个基础资料联动起来。先创建一个列表插件,增加一个FilterContainerInitArgs属性,重写filterContainerInit、filterContainerSearchClick两个方法。

image.png

先从filterContainerSearchClick分析,从参数args中先拿到所有的常用条件过滤列表,从自定义过滤条件中拿到是否选择了组织,如果选择了组织过滤,并且组织的值不为空,就把这个组织的值放入到缓存中。如果组织的值为空,就把缓存中组织清空。然后调用初始化方法初始化过滤条件列表

image.png

接着分析filterContainerInit方法,第一步就是把参数args给initArgs方法赋值方便filterContainerSearchClick方法调用filterContainerInit方法时传参。然后获取所有的常用条件,遍历常用过滤条件,如果过滤条件为项目时,判断缓存中是否有组织的id,如果有组织信息,那么根据组织信息,查询该组织下所有的项目基础资料,并给项目过滤条件赋值。赋值之后,列表的过滤条件为最新的过滤条件。

image.png

完成之后,部署插件就可以了,看效果

image.png

image.png

赞 13