精彩的人生

          好好工作,好好生活

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            147 Posts :: 0 Stories :: 250 Comments :: 0 Trackbacks
          BIRT的chart功能似乎并不是很強大,反正在使用過程中,出現過編輯器不好使,被迫直接修改xml文件的情況.

          現在,有一個這樣的需求,就是讓Y軸的標題顯示用戶輸入的值.



          如圖所示,這個標題是在編輯/定義圖表的時候輸入的固定值,這個值不管是改成params["test"]還是reportContext.getParameter("test")都會直接返回文本,而不是表達式值.

          但是,這個文本唯一支持的動態,就是本地化,那么本文將介紹如何利用resources.properties來實現這個標題的動態顯示

          首先,設置這個chart的resource使用<YOUR_LOCATION>/reources.properties文件

          然后,在這個properties文件中輸入test_field=Hopeshared's Test

          接著,修改這個title


          這個時候,preview的結果,title就會顯示properties文件里的內容

          向report添加一個名為test的參數,這個參數是string類型,必填項,用戶的輸入將保存到properties文件并顯示在chart中

          接著,寫個腳本,讓properties文件內容發生變化
          在整個report的initialize方法中,寫入
           1importPackage(Packages.java.lang);
           2importPackage(Packages.java.util);
           3importPackage(Packages.java.io);
           4importPackage(Packages.java.net);
           5
           6var t_value = params["test"];
           7var prop=new Properties();
           8
           9var in_stream=new FileInputStream("<YOUR_PROPERTIES_FOLDER>/resources.properties");
          10prop.load(in_stream);
          11in_stream.close();
          12        
          13prop.put("test_field", t_value);
          14
          15var   fout=new  FileOutputStream("<YOUR_PROPERTIES_FOLDER>/resources.properties");
          16prop.store(fout,"Test Properties");
          17fout.close();
          18
          19var current = new File("<YOUR_PROPERTIES_FOLDER>");
          20
          21var cl = new URLClassLoader(new Array(current.toURL()));
          22res = ResourceBundle.getBundle("resource", Locale.getDefault(), cl);

          最后,preview一下,看看結果.

          歡迎大家告訴我其他更好的辦法來達到這個目標,謝謝!
          posted on 2007-11-12 13:20 hopeshared 閱讀(3931) 評論(4)  編輯  收藏 所屬分類: BIRT

          Feedback

          # re: BIRT.CHART: 讓Y軸標題動態修改[未登錄] 2007-11-13 16:07 hopeshared
          傻了,其實有很簡單的辦法實現的
          在圖上寫個腳本
          function beforeDrawAxisTitle(axis, label, icsc)
          {
          label.getCaption().setValue(icsc.getExternalContext().getScriptable().getParameterValue("test"));
          }
          就可以了,hoho  回復  更多評論
            

          # re: BIRT.CHART: 讓Y軸標題動態修改 2008-04-22 18:42 fy_kenny
          好方法,

          我初次接觸,還望前輩指點啊.  回復  更多評論
            

          # re: BIRT.CHART: 讓Y軸標題動態修改 2008-08-19 08:52 月下孤影
          你這個方法
          function beforeDrawAxisTitle(axis, label, icsc)
          {
          label.getCaption().setValue(icsc.getExternalContext().getScriptable().getParameterValue("test"));
          }

          應該寫到哪里呢?  回復  更多評論
            

          # re: BIRT.CHART: 讓Y軸標題動態修改[未登錄] 2011-07-04 13:56 clark
          @hopeshared
          X軸好像也發生了改變,和Y軸一樣!  回復  更多評論
            


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


          網站導航:
           
          主站蜘蛛池模板: 开阳县| 万荣县| 呼玛县| 靖州| 元江| 大名县| 卓资县| 黄大仙区| 车致| 犍为县| 连平县| 仙居县| 嘉祥县| 松江区| 吴旗县| 泰来县| 泸西县| 长垣县| 曲周县| 江阴市| 琼结县| 抚宁县| 辽宁省| 延川县| 镇巴县| 敦煌市| 历史| 永清县| 金秀| 佛学| 洛浦县| 麻江县| 远安县| 中西区| 仁寿县| 团风县| 容城县| 洛川县| 漳平市| 中西区| 罗定市|