Java軟件報表軟件技術博客

          java報表軟件技術匯總 java報表軟件制作 報表軟件新聞
          posts - 355, comments - 100, trackbacks - 0, articles - 3
             :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

          1、場景描述

          在用報表開發工具FineReport設計的web報表中,給iframe設置src嵌入某個報表時,往往會給報表傳遞初始的參數值,例如:

          <iframe id="reportFrame" width="900" height="400" src="/WebReport/ReportServer?reportlet=/report.cpt&參數1=參數值&參數2=參數值..."></iframe>  

          若參數名稱、參數值甚至報表名稱中包含中文或者特殊字符時,如果不進行編碼轉換,可能會出現一系列問題。比如下圖:


          今天我就來講講該如何如何傳遞中文參數。

          2、使用cjkEncode對中文進行編碼轉換

          使用cjkEncode對調用報表的路徑或參數進行編碼,報表獲取到參數后會自動進行解碼,保證不會出現亂碼等一系列情況。

          cjkEncode是FR內部封裝好的編碼方法,在js中使用cjkEncode有兩種方式,該節我們舉例介紹。

          2.1加載finereport.js使用cjkEncode

          cjkEncode方法在FineReport的JS庫中已經預先提供了,用戶可以在自己的網頁中引入FineReport的JS庫,就可以使用FR.cjkEncode對中日韓文字符進行編碼,如下對調用報表的url進行cjkEncode:

          1.      <html>    

          2.        <head>    

          3.        <title>FineReport Demo</title>    

          4.        <meta http-equiv="Content-Type" content="text/html; charset=GBK" />    

          5.        <script type="text/javascript" src="/WebReport/ReportServer?op=emb&resource=finereport.js"></script>  

          6.        <script language="javascript">  

          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.    </script>  

          13.    </head>    

          14.    <body>    

          15.      <iframe id="reportFrame" width="900" height="400" ></iframe>    

          16.    </body>  

          17.  </html>  

          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.     <html>  

          2.       <head>    

          3.       <title>FineReport Demo</title>    

          4.       <meta http-equiv="Content-Type" content="text/html; charset=GBK" />    

          5.       <script type="text/javascript">  

          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.      }     

           


           

           




          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 岗巴县| 海南省| 海兴县| 石屏县| 铜鼓县| 敦化市| 怀柔区| 汶川县| 大宁县| 虎林市| 多伦县| 友谊县| 武夷山市| 常宁市| 阳西县| 封开县| 扬州市| 开原市| 临猗县| 会宁县| 大宁县| 黎平县| 芦山县| 南通市| 保亭| 蕲春县| 阳城县| 安顺市| 乐清市| 青河县| 江陵县| 子洲县| 合山市| 白朗县| 大厂| 庐江县| 阳新县| 老河口市| 江口县| 喜德县| 水城县|