手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

excel报表开发工具FineReport Web传递中文参数

时间:2025-01-09 01:33:22

给iframe设置src嵌入某个报表时,往往会给报表传递初始的参数值,例如:<iframeid="reportFrame"width="900"height="400"src="/WebReport/ReportServer?reportlet=/report.cpt&参数1=参数值&参数2=参数值..."></iframe>若参数名称、参数值甚至报表名称中包含中文或者特殊字符时,如果不进行编码转换,可能会出现一系列问题。

excel报表开发工具FineReport Web传递中文参数

工具/原料

FineReport

使用cjkEncode对中文进行编码转换

1、1加载finereport.js使用cjkEncodecjkEncode方法在FineReport的JS库中已经预先提供了,用户可以在自己的网页中引入FineReport的JS库,就可以使用FR.cjkEncode对中日韩文字符进行编码,如下对调用报表的url进行cjkEncode:

2、<html><head><title>FineReportDemo</title><metahttp-equiv="Content-Type"content="text/html;charset=GBK"/><scripttype="text/javascript"src="/WebReport/ReportServer?op=emb&resource=finereport.js"></script><scriptlanguage="javascript">functionautoLoad(){varaddr=FR.cjkEncode("/WebReport/ReportServer?reportlet=/doc/Primary/Parameter/Parameter.cpt&地区=华东");document.getElementById("reportFrame").src=addr;}window.onload=autoLoad;</script></head><body><iframeid="reportFrame"width="900"height="400"></iframe></body></html>

3、finereport.js使用的是jquery框架,若用户也使用了jquery,可能会造成冲突,这时建议不要引入finereport.js,而是将cjkEncode方法拷贝到页面中直接使用,详见下面的方法。

4、2直接调用cjkEncode加载finereport.js再引用cjkEncode,一方面可能会引起js冲突,另一方面也加载了很多不必要的方法。若用户只需要使用该方法,可以将cjkEncode实现的代码复制到网页中或者用户自己的js文件中,然后再引用cjkEncode。

5、<html><head><title>FineReportDemo</title><metahttp-equiv="Content-Type"content="text/html;charset=GBK"/><scripttype="text/javascript">//cjkEncode方法的实现代码,放在网页head中或者用户自己的js文件中functioncjkEncode(text){if(text==null){return"";}varnewText="";for(vari=0;i<text.length;i++){varcode=text.charCodeAt(i);if(code>=128||code==91||code==93){//91is"[",93is"]".newText+="["+code.toString(16)+"]";}else{newText+=text.charAt(i);}}returnnewText;}functionautoLoad(){varaddr=cjkEncode("/WebReport/ReportServer?reportlet=/doc/Primary/Parameter/Parameter.cpt&地区=华东");document.getElementById("reportFrame").src=addr;}window.onload=autoLoad;//加载网页时调用autoLoad方法</script></head><body><iframeid="reportFrame"width="900"height="400"></iframe></body></html>

© 手抄报圈