Web报表FineReport页面如何传递中文参数
- 格式:pdf
- 大小:279.18 KB
- 文档页数:4
Web报表页面如何传递中文参数
1. 场景描述
在用报表开发工具FineReport设计的web报表中,给iframe设置src嵌入某个报表时,往往会给报表传递初始的参数值,例如:
若参数名称、参数值甚至报表名称中包含中文或者特殊字符时,如果不进行编码转换,可能会出现一系列问题。比如下图:
今天我就来讲讲该如何如何传递中文参数。
2. 使用cjkEncode对中文进行编码转换
使用cjkEncode对调用报表的路径或参数进行编码,报表获取到参数后会自动进行解码,保证不会出现乱码等一系列情况。
cjkEncode是FR内部封装好的编码方法,在js中使用cjkEncode有两种方式,该节我们举例介绍。
2.1 加载finereport.js使用cjkEncode
cjkEncode方法在FineReport的JS库中已经预先提供了,用户可以在自己的网页中引入FineReport的JS库,就可以使用FR.cjkEncode对中日韩文字符进行编码,如下对调用报表的url进行cjkEncode:
1.
2.
3.
4.
5.
6.
7. function autoLoad(){
8. var addr = FR.cjkEncode("/WebReport/ReportServer?reportlet=/doc
/Primary/Parameter/Parameter.cpt&地区=华东");
9. document.getElementById("reportFrame").src = addr;
10. }
11. window.onload = autoLoad;
12.
13.
14.
15.
16.
17.
finereport.js使用的是jquery框架,若用户也使用了jquery,可能会造成冲突,这时建议不要引入finereport.js,而是将cjkEncode方法拷贝到页面中直接使用,详见下面的方法。
已完成示例请参照%FR_HOME%\WebReport|page_demo\parameter_ch.html 2.2 直接调用cjkEncode
加载finereport.js再引用cjkEncode,一方面可能会引起js冲突,另一方面也加载了很多不必要的方法。
若用户只需要使用该方法,可以将cjkEncode实现的代码复制到网页中或者用户自己的js文件中,然后再引用cjkEncode。
1.
2.
3.
4.
5.
6.//cjkEncode方法的实现代码,放在网页head中或者用户自己的js文件中
7. function cjkEncode(text) {
8.if (text == null) {
9.return"";
10. }
11. var newText = "";
12.for (var i = 0; i < text.length; i++) {
13. var code = text.charCodeAt (i);
14.if (code >= 128 || code == 91 || code == 93) { //91 is "["
, 93 is "]".
15. newText += "[" + code.toString(16) + "]";
16. } else {
17. newText += text.charAt(i);
18. }
19. }
20.return newText;
21. }