BIRT常用操作

1. 动态修改chart/report的title

 选中并打开一个xxx.rptdesign,先点"Layout"标签,再点"Script"标签,这个时候就能进入整个report的

script编辑页面,这个script是"onRender" scripts,里面有各种Event Function,如beforeDataSetFilled,

 beforeGeneration, beforeGeneration, agterRendering...我们可以通过设置chart的beforeGeneration

响应事件来改变其title,如下:

function beforeGeneration(chart, context)
{
var title = context.getExternalContext().getScriptable().getParameterValue("title");
chart.getTitle().getLabel().getCaption().setValue(title);
}
2. BIRT.CHART: 让Y轴标题动态修改
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方法中,写入
 1 importPackage(Packages.java.lang);
 2 importPackage(Packages.java.util);
 3 importPackage(Packages.java.io);
 4 importPackage(Packages.java.net);
 5
 6 var t_value = params["test"];
 7 var prop= new Properties();
 8
 9 var in_stream= new FileInputStream("<YOUR_PROPERTIES_FOLDER>/resources.properties");
10 prop.load(in_stream);
11 in_stream.close();
12         
13 prop.put("test_field", t_value);
14
15 var   fout= new  FileOutputStream("<YOUR_PROPERTIES_FOLDER>/resources.properties");
16 prop.store(fout,"Test Properties");
17 fout.close();
18
19 var current =  new File("<YOUR_PROPERTIES_FOLDER>");
20
21 var cl =  new URLClassLoader( new Array(current.toURL()));
22 res = ResourceBundle.getBundle("resource", Locale.getDefault(), cl);

最后,preview一下,看看结果.
其实有很简单的办法实现的 
在图上写个脚本 
function beforeDrawAxisTitle(axis, label, icsc) 

label.getCaption().setValue(icsc.getExternalContext().getScriptable().getParameterValue("test")); 

3.动态文本显示(displayString属性)
if(params["type"].value==0){
displayString = "全国各省业务量报表";
}else if(params["type"].value==1){
displayString = "总部负责省份业务量报表";
}else if(params["type"].value==2){
displayString = "省分负责省份业务量报表";
}else{
displayString = "类型参数传递错误";
}

birt 合并单元格

a a1 1
a a2 2
a a3 3

显示为:

----- a1 1
a ---- a2 2
---- a3 3

 

首先需要按a所在的列分组,然后设置组头所在单元格的“放置”属性,选择“全部“或“详细资料“

 表格Table合并单元格

(即:“放置”属性在那里,原来就是general中的Drop属性)

来自:

http://www.actuatechina.com/thread1278.html


来自互联网,版权归原作者.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值