一文读懂-报表动态列原创
金蝶云社区-金蝉子
金蝉子
5人赞赏了该文章 2,379次浏览 未经作者许可,禁止转载编辑于2021年06月17日 15:59:10
summary-icon摘要由AI智能服务提供

本文介绍了如何在系统中为报表动态添加或修改列,以适应不同物料选择的需求。提出了两种解决方案:预制列并通过筛选条件修改列名;以及动态插入新列。通过案例展示了具体实现方法,并总结了两种方法的优缺点及使用场景。

如何实现给报表动态添加列修改列

 

在系统后台,我们看到最多的就是一张张报表。有的人对报表的第一印象肯定是“嗨,表格嘛,就和excel表格差不多,有什么可难的”。统计报表虽然看起来简单,但后端产品中,统计报表是非常重要的,在设计的过程中还是有很多小细节和注意事项的。今天我们就来谈一谈如何实现给报表动态添加列修改列。

 

 image.png

首先新建一张简单报表,我们要实现的内容是根据选择的物料不同,报表显示出采购申请编号,采购日期,和该物料的采购数量。

该问题的处理方式有两种:

1、预制一列,查出结果过修改预制列的名称为选择物料的名称;

2、根据选择物料的名称,在查询前动态插入一列,然后查出结果。

 

案例一:使用预制列的方式

 image.png

写一段简单的orm查询如下图,设置筛选条件-->设置查询条件-->进行Orm查询获取报表数据出对应的值。

 image.png

获取到如下图结果,但是我们发现表头名称为预制列,不符合我们案例的要求。

 image.png

那么我们如何将查询条件中的值赋值到我们预制列上呢?下面就要用到我们AbstractReportListDataPlugin类下的getColumns方法。在getColumns方法可以根据this.getQueryParam()拿到筛选条件,从而拿到物料名称,再遍历报表的列,修改预制列名称为物料名称。

 image.png

可以看见列名修改成功啦!

 

 

案例二:使用插入列的方式

 image.png

写查询的orm操作不变,去掉预制列如上图,我们使用根据查询条件动态的给报表容器中添加列的方式来实现该问题。首先在报表中实现AbstractReportFormPlugin.beforeQuery的方法如下图,根据queryParam拿到筛选条件,从而拿到物料名称,再获取报表视图模型的列,新建一个列添加到报表列中。

 

 

 

 image.png

 

可以看见列添加成功啦!

 

 

总结:

1. 使用预制列的方式在报表插件getColumns方法中根据筛选条件修改列名;

2. 使用插入列的方式在表头插件beforeQuery方法中根据筛选条件添加一列;

3. 在报表插件getColumns方法中添加列,数据不会显示到该列中

 

以上就是本期的全部内容啦,咱们下期再见!


赞 5