报表知识库
我要提问

填报表实现暂存,入库,取消功能

客户在使用填报表填写数据时往往需要在页面上填完数据后并不要求将填写后的数据直接提交到数据库,要先暂存起来,等数据确定准确后再将数据保存到数据库中,同时,如果发现数据错误太多,可以点击取消按钮,将前边数据填写工作取消掉。

暂存有多种方式实现,但是要实现暂存功能,一定要将当前数据进行保存,一遍下次能查看到相关数据。这里可以将暂存的数据保存到数据库,然后通过一个标志位区分是正式入库的数据还是暂存的数据,在数据库表中增加一个标志字段TYPE,当TYPE值为1时表示为正式入库数据,TYPE0时为暂存数据。

这样就可以通过动态的改变TYPE字段的值来实现相关功能。润乾报表内置了几个js函数,点击该js函数就能实现该功能。同样,页面上的按钮也可以自己来定义,这里要求点击不同按钮要将实现不同的填报功能,主要是控制填往TYPE字段的值动态变换,在更新设置中将TYPE字段所对应的单元格设定为A1

这样当点击页面上不同按钮,对A1单元格设置不同的值即可,将A1单元格的默认值设为0

更改页面按钮:

<a href=”#” onClick=”save()”>保存</a>

<a href=”#” onClick=”_submitTable( report1 );return false;”>暂存</a>

<a href=”#” onClick=”del()”>取消</a>

点击保存时调用定义的javascript函数save(),下面看下该函数的定义:

       function save(){

                     var cell = document.getElementById(“report1_A1″);//获得A1单元格

    cell.value = 1;//修改真实值,将该值设定为1,这样提交后TYPE字段值就为1

cell.innerText= 1;//修改显示值

       _submitTable( report1 );//提交数据

                     }

这样,通过调用该函数就能将A1单元格的值动态的改为1,这样提交到数据库中TYPE字段的值就会变为1,表示该数据为正式入库的数据。

暂存按钮执行javascript函数_submitTable( report1 ),该函数为润乾内置函数,将数据提交到数据库,因为设定报表时A1单元格的默认值为0,所以点击暂存按钮数据字段TYPE的值为0,表示为暂存数据。

取消按钮要求点击后,将数据清除掉,此处可以调用填报监听类,将相应的数据删除就行,点击删除按钮后通过jsA1的单元格的值改为2,然后在填报监听类里判断A1的值是否为2,如果是则删除相应数据。

function del(){

             

              var cell = document.getElementById(“repor1_A1″);

              cell.value = 2;//修改真实值

        cell.innerText= 2;//修改显示值

              _submitTable( report1 );

                     }

jsptag标签中增加填报监听类:

inputListener=”del”

del.java部分代码

String type=report.getCell(1, (short)1).getInputValue().toString();

    String sql=”delete table1 where TYPE=’0’”;//注意,删除时可能还需要一些其他参数,例如表名,可通过其他参数获得

              if(type.equals(“2″)){//判断标识位是否为2,如果是则执行删除操作

                 stmt = con.createStatement();

                     stmt.executeUpdate(sql);

                     con.commit();

                     stmt.close();

                     con.close();

        }

这样,就能实现填报表的暂存、入库、取消等功能,符合客户的业务需求。