打印时报表的几种需求
随着客户的不同,对打印的具体需求也会发生相应变化,大概分以下集中:
一:页面上展现一张表,该报表可能增加很多背景色前景色等,但是点打印或导出时只需要黑白打印,即展现一张表打印时为另一张表
解决方法:制作一张和展现报表一样的报表文件(背景色等不同),在显示报表的jsp标签中加入 printedRaq=”aa.raq”,这样打印时调用的为aa.raq,并且页面上的参数也会参与相应运算。
二:客户原来自己做了相应报表,比如说填报表,只用来填写数据,润乾只是用于打印或导出,并且在客户原有页面上点打印时不再弹出jsp页面显示报表,直接调用applet展现打印预览形式。
解决方法:定义相关js函数,页面上点击按钮式onClick时调用该js函数即可,例如:
function print() {
document.report1_printIFrame.location = “http://localhost:8001/report/servlet/com.runqian.report.view.DataServlet?name=report1&reportFileName=<%=raqName%>&canModifyBeforePrint=no&srcType=file&action=print&savePrintSetup=no&appletJarName=runqianReportApplet.jar&reportParamsId=<%=reportParamsId%>”;
}
reportParamsId即为参数id,能把一些参数也传到报表中进行计算,代码如:
String reportParamsId = null;//定义reportParamsId
Hashtable hash = new Hashtable();
hash.put( “arg1″, “1111111″ );//将参数和值放到hashtable中,arg1为报表中定义的参数,保监会中改成人员id那个参数名,111111为参数值,将userid放在这
if( hash.size() > 0 ) {
//生成一个ID,并把这个ID与刚才准备的hash形成键值关系
reportParamsId = com.runqian.report.view.ParamsPool.createParamsId();//生成参数缓存id
com.runqian.report.view.ParamsPool.put( reportParamsId, hash );//将id放到缓存中
}
这样即可实现报表不展现,也能够实现打印或导出。
三:销售订单类报表偏多,页面上先展现各个订单号,前边带有复选框,用鼠标选中想要打印的订单号,然后点击打印,需要把所选择的订单编号所对应的明细都打印出来。
解决方法:该表通常有两种需求,一种是在一张报表中把多个订单编号数据都取出,然后扩展打印,另一种为多个订单号对应多张报表,这里说下对应多张报表时的调用方法,首先获得复选框选中的订单编号的值,然后将该值传给润乾批量打印的jsp(应用开发文档中有相关例子),这样就可以在该jsp中调用不同的报表,一次打印出来。