文档详情

BIRT与WEB整合生成动态表.doc

发布:2017-02-11约6.09千字共5页下载文档
文本预览下载声明
BIRT与WEB整合生成动态表 有时候生成报表时,表的属性列不固定,这个时候用传统的BIRT构建表满足不了要求,我们可以通过BIRT整合WEB来生成动态表。具体方法如下: 建立数据源和数据集 新建一个 “Scripted Data Source”的数据源(以“PieDataSource”命名为例);从PieDataSource 数据源中新建一个 Scripted Data Set 数据集(以“PieDataSet”命名为例)。 建立一个空的 Table 项 新建一个1行1列的Table (Table 以 “PieTable” 命名为例),拖入适当的布局区域,并绑定一个 数据集 PieDataSet 。 在BIRT 设计页面中绑定JAVA类 在数据集 PieDataSet 的 Event Handler 中绑定一个实现 IScriptedDataSetEventHandler接口(或继承 ScriptedDataSetEventHandler 类)的自定义类(以“PieChartDataSetEventHandle”命名为例)。 点击BIRT的报表设计工具的 layout 页面的空白处,在 Property Editor 的 Event Handler 标签中绑定一个继承 ReportEventAdapter 类(或实现 IReportEventAdapter接口)的自定义类(以 “PieChartReportEventHandle”命名为例)。 代码编写 1) 数据集的绑定类PieChartDataSetEventHandle代码如下: public class PieChartDataSetEventHandle implements IScriptedDataSetEventHandler { //列属性数据(即表头数据) protected IColumnMetaData meta = null; //表头数量(即数据表中有多少列属性) protected int metaCount = 0; protected IteratorMapString,String ite = null; //表头数据列表 protected ListString metalist = new ArrayListString(); //数据键值对列表 protected ListMapString,String pojolist = new ArrayListMapString,String(); //存放 ResultVO protected MapString,Object hash = new HashMapString,Object(); public void close(IDataSetInstance arg0) throws ScriptException { meta = null; ite = null; } @SuppressWarnings(unchecked) public boolean describe(IDataSetInstance arg0, IScriptedDataSetMetaData arg1) throws ScriptException { metalist.clear(); metalist = (ListString) hash.get(metadata); pojolist = (ListMapString, String) hash.get(result); IteratorString iterator = metalist.iterator(); while(iterator.hasNext()){ arg1.addColumn(iterator.next(), String.class); } return true; } public boolean fetch(IDataSetInstance arg0, IUpdatableDataSetRow arg1) throws ScriptException { if (ite == null || !ite.hasNext()) { return false; } else { try { MapString, String colmap = ite.next(); for (int t = 0; t metalist.size(); t++) { arg1.setColumnValue(metalist.get(t), colmap.get(String.
显示全部
相似文档