统计图超链接中加参数
需求背景:
客户的需求是想在我们的统计图中添加图形超链接来跳转到相关的页面中,但目前我们的统计图图形传参中只能引用@category 和@legend这两个分类轴和系列名称的固定变量。客户希望能够传递外部参数或是在参数模板中动态设定的参数在我们的统计图图形超链接中。
解决思路:
无法在设计器中设计取值,人为修改已设计好的报表图形超链接。
操作步骤:
1. 利用报表设计器设计好最接近的报表雏形
2. 利用API修改我们的报表图形超链接
//读取报表模板
String filepathOld=application.getRealPath(reportFileHome+ File.separator +report);
String filePathNew=filepathOld.replace(“\\”,”\\\\”);
ReportDefine rd = (ReportDefine)ReportUtils.read(filePathNew);
//报表参数中取默认值
ParamMetaData pmd=rd.getParamMetaData();
Param addvalueParam= pmd.getParam(“queryDate”);
String addValue=addvalueParam.getValue();
if(“”.equals(addValue) || addValue == null){
addValue=”";
}
String addparamValue =addValue;//默认值设置为主模板参数的默认值
//参数模板存入参数缓存池中取值
if(param.indexOf(“reportParamsId=”)>=0) {
int stringStart= param.indexOf(“=”);
int stringEnd= param.indexOf(“;”);
String reportParamsId= param.substring(stringStart+1,stringEnd);
Hashtable hashtableparams = null;
String addparamValue =addValue;//默认值设置为主模板参数的默认值
if(!”".equals(reportParamsId) && reportParamsId != null){
hashtableparams= com.runqian.report4.view.ParamsPool.get( reportParamsId );
addparamValue = (String) hashtableparams.get(“queryDate”);// 按主模板参数名取值
}
}
//设置统计图图形超链接
INormalCell inc = rd.getCell(2, (short)1);
GraphProperty gp = inc.getGraphProperty();
String oldurl =gp.getLink();
String newurl = oldurl.replace(“)”, “,’”+addparamValue+”‘)”);
gp.setLink(newurl);
inc.setGraphProperty(gp);
rd.setCell(2,(short)1,inc);
效果图