如何实现参数的保存及默认查询
需求:
带参数模板报表用户选择参数查询后,页面中增加一个保存参数按钮,点击后能将当前参数值保存下来,下次再次访问同一报表时,默认用上次保存的参数值查询展现结果。
解决方案:
思路:在页面上增加个保存按钮,点击时获取参数,然后将参数保存到一个指定文件(或者数据库)内,下次访问报表时,再从文件里取出对应的参数值传递给报表运算。
参数保存:
在展示报表的 jsp 中(一般为 showReport.jsp)增加保存按钮:
<a href="javascript:save_param( form1 )" class="" style="vertical-align:middle;padding:0px 8px;">保存</a>
点击时调用 javascript 函数:save_param(form1),在 jsp 的 javaScript 代码中增加这个参数定义:
function save_param(arg1){
var params = $(form1).serialize().replace("&",";");//获取参数表单中参数,并且将&替换成;
var reportName="<%=report%>";//获取当前报表名
$.ajax({//通过ajax方式保存参数
url:"save_param.jsp", //请求的url地址
dataType:"text",
async:true,//请求是否异步,默认为异步,这也是ajax重要特性
data:{"reportName":reportName,"params":params}, //参数值
type:"GET", //请求方式
beforeSend:function(){
// alert("dsadf");
},
success:function(data1, textStatus){
//alert(data1)
},
complete:function(XMLHttpRequest, textStatus){
// alert(textStatus);
},
error:function(data1){
// alert(data1.msg);
}
});
}
参数要保存到服务器上方便下次读取,所以此处用了 ajax 方式,调用应用里的 save_param.jsp,在 save_param.jsp 中可以将参数保存下来,如果对 java 程序熟悉,这里可以自己写 java 程序实现参数的保存或者读取,如果不想写过多 java 程序,这里可以通过润乾的一个脚本数据集来实现,新建一张空白报表,增加参数:
reportName:用来接收报表名称
params:接收参数串
user:接收用户名,比如同一个报表,不同用户需要不同的参数
增加脚本数据集,里边可以使用润乾内置的集算器语法,实现文件的读取,保存等操作,脚本如下:
A2:建立一个空序表,字段名称叫 param
B2:往 A2 里插入值,值就是接收到的 params 参数
A3:在服务器目录上新建 txt 文件,文件名是 reportName 中的报表名,然后将参数值写入这个文件
A4:脚本数据集需要返回个序表,所以 A4 中做了返回
报表命名为:save_param.rpx, 保存到 reportFiles 目录下。
接下来看下如何调用这个报表文件,来实现参数的保存。
润乾报表提供了 api 接口可以计算报表,计算报表时数据集也会进行运算,所以在之前的 ajax 中调用的 save_param.jsp 中调用润乾的 api 接口计算刚才定义的报表文件就行,save_param.jsp 中代码如下:
String reportPath = request.getRealPath(“WEB-INF\\reportFiles\\save_param.rpx”);// 读取报表
String reportName = request.getParameter(“reportName”);
System.out.println(“reportName====”+reportName);
String params = request.getParameter(“params”);
ReportDefine rd = (ReportDefine)ReportUtils.read(reportPath);
Context cxt = new Context();
cxt.setParamValue(“reportName”,reportName);// 设置报表参数 cxt.setParamValue(“params”,params);// 设置报表参数,
Engine engine = new Engine(rd, cxt); // 构造报表引擎
IReport iReport = engine.calc(); // 运算报表
这样会在服务器上指定目录生成对应报表名的 txt 文件。
默认查询:
通过上述方法将参数存成了 txt 文件,访问报表时先从这个 txt 中取出对应的参数拼接到润乾的标签中就行。
同样,如果对 java 程序比较熟悉,可以通过 java 解析 txt 文件,读取里边的参数值,这里还是借助润乾的脚本数据集来实现,避免过多 java 代码编写。
新建报表,报表中增加参数:
增加脚本数据集:
判断文件是否存在,存在的话读取 txt 文件返回。
将该报表命名为 get_param.rpx,保存到 reportFiles 目录下。
在展示报表的 jsp(showReport.jsp)中增加代码,计算这个报表,读取里边的数据:
String reportPath = request.getRealPath(“WEB-INF\\reportFiles\\get_param.rpx”);// 读取报表
ReportDefine rd = (ReportDefine)ReportUtils.read(reportPath);
Context cxt = new Context();
cxt.setParamValue(“reportName”,report);//
System.out.println(“reportName====”+report);
Engine engine = new Engine(rd, cxt); // 构造报表引擎
IReport iReport = engine.calc(); // 运算报表
if(cxt.getDataSet(“ds1”).getRowCount()>=1){
param.append(cxt.getDataSet(“ds1”).getData(1,1).toString().replace(“&”,“;”));// 将获取到的参数拼接到 param 串中传递给报表标签
}
这样就能够实现参数的保存以及下次再访问报表时用之前保存的参数默认查询。
页面端效果:
对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅
嗯,还不太了解好多乾?