报表知识库
我要提问

动态增删行

任务背景:

输入页面的动态增删行是个比较头痛的问题。用户在录入数据的时候,往往希望可以动态插入、删除、添加记录,这样操作起来比较方便。
对于比较简单的清单式报表,有这样的要求,但是对于比较复杂的分组报表,或者是分片输入的报表,也同样会提出类似的要求。此时要求能够选择报表区域,针对某个区域进行增删行的操作。
新增加的行要求能够自动生成对应的编辑风格、自动计算、合法性检查等功能

面临困难:

如果编程实现上述的功能,面临如下困难:

  1. 需要记录每条记录的修改、删除、新增状态
  2. 需要写复杂的javascript,实现动态增删的功能
  3. 对于分组报表和分片输入的报表,还需要智能识别用户需要增删的是哪个报表区域,从而对相应区域进行操作。
  4. 动态增删需要考虑的细节非常多,决不是表面上的增删行那么简单,在增加行的时候需要把编辑风格、自动计算、合法性检查等属性动态解析到新增加的行,这是一个最复杂的功能,因为每一行的编辑风格、自动计算、合法性检查等属性不会完全一样,因为这些属性往往和当前行的一些数据值有关系。而且还有一些全局的自动计算,可能和所有行都有关系,例如对所有行的sum操作等,这些自动计算的表达式都要动态的解析和变化。
  5. 当然,新增加的行还会有缺省值等属性,例如动态流水号等等,这些功能必然会遇到。

考虑到直接编程实现上述功能太麻烦,建议采用润乾报表的行式填报,润乾报表的行式填报从根本上解决了动态增删行的问题,不仅仅可以对分组报表、分片输入的报表实现多区域的插入删除,还能够动态解析编辑风格、自动计算、合法性检查等属性,实现了很智能的流水号、缺省值等功能,实现步骤如下:

实现步骤:

  1. 设计一个填报表,把报表样式设为“行式报表”
  2. 根据业务需要,添加编辑风格、自动计算、合法性检查、流水号等属性
  3. 在jsp中发布时,往tag里添加insertRowLabel、appendRowLabel、deleteRowLabel等属性,即插入、添加、删除按钮。
  4. 于是,功能完美的行式填报完成了,请看效果图:

    效果演示:

    cccc.png