




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
BIRT与WEB整合生成动态表有时候生成报表时,表的属性列不固定,这个时候用传统的BIRT构建表满足不了要求,我们可以通过BIRT整合WEB来生成动态表。具体方法如下:1、 建立数据源和数据集新建一个 “Scripted Data Source”的数据源(以“PieDataSource”命名为例);从PieDataSource 数据源中新建一个 Scripted Data Set 数据集(以“PieDataSet”命名为例)。2、 建立一个空的 Table 项新建一个1行1列的Table (Table 以 “PieTable” 命名为例),拖入适当的布局区域,并绑定一个 数据集 PieDataSet 。3、 在BIRT 设计页面中绑定JAVA类1) 在数据集 PieDataSet 的 Event Handler 中绑定一个实现 IScriptedDataSetEventHandler接口(或继承 ScriptedDataSetEventHandler 类)的自定义类(以“PieChartDataSetEventHandle”命名为例)。2) 点击BIRT的报表设计工具的 layout 页面的空白处,在 Property Editor 的 Event Handler 标签中绑定一个继承 ReportEventAdapter 类(或实现 IReportEventAdapter接口)的自定义类(以 “PieChartReportEventHandle”命名为例)。4、 代码编写1) 数据集的绑定类PieChartDataSetEventHandle代码如下:public class PieChartDataSetEventHandle implements IScriptedDataSetEventHandler /列属性数据(即表头数据)protected IColumnMetaData meta = null;/表头数量(即数据表中有多少列属性)protected int metaCount = 0;protected IteratorMap ite = null;/表头数据列表protected List metalist = new ArrayList();/数据键值对列表protected ListMap pojolist = new ArrayListMap();/存放 ResultVOprotected Map hash = new HashMap();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 = (List) hash.get(metadata);pojolist = (ListMap) hash.get(result);Iterator 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 Map colmap = ite.next();for (int t = 0; t metalist.size(); t+) arg1.setColumnValue(metalist.get(t), colmap.get(String.valueOf(t + 1); catch (ScriptException e) e.printStackTrace();return true;public void open(IDataSetInstance arg0) throws ScriptException try meta = arg0.getColumnMetaData();metaCount = meta.getColumnCount();ite = pojolist.iterator(); catch (Exception e) e.printStackTrace();public void afterClose(IReportContext arg0) throws ScriptException public void afterOpen(IDataSetInstance arg0, IReportContext arg1)throws ScriptException public void beforeClose(IDataSetInstance arg0, IReportContext arg1)throws ScriptException SuppressWarnings(unchecked)public void beforeOpen(IDataSetInstance arg0, IReportContext arg1)throws ScriptException hash = (Map) arg1.getParameterValue(resultvo);public void onFetch(IDataSetInstance arg0, IDataSetRow arg1,IReportContext arg2) throws ScriptException 2)PieChartReportEventHandle中的 beforeFactory 方法代码:try ElementFactory elementFactory = reportContext.getDesignHandle().getElementFactory();/获取 Table 的句柄TableHandle mytable = (TableHandle) reportContext.getDesignHandle().findElement(PieTable);/设置 Table 的宽度mytable.setWidth(100%);PropertyHandle colbinds = mytable.getColumnBindings( );/取列表头文件PieResultDao dao=new PieResultDao();Map hash=dao.getResultMap();reportContext.setParameterValue(resultvo, hash);if(hash!= null&hash.get(metadata)!=null)List list=(List)hash.get(metadata);RowHandle myheader = (RowHandle) mytable.getHeader( ).get( 0 );/获得表格头RowHandle mydetail = (RowHandle) mytable.getDetail().get(0);/获得明细行int i=0;/计列数for(String column : list)/添加数据绑定列ComputedColumn cs = StructureFactory.createComputedColumn( );cs.setName( column );cs.setExpression( dataSetRow+column+);colbinds.addItem( cs );mytable.insertColumn(i,1);/循环插入新列,每次加在最后一列的后面/ColumnHandle mycolumn = (ColumnHandle) mytable.getColumns().get(i); 可以得到表的列添加属性/mycolumn.setProperty(width, 2cm);/数据列CellHandle dcell = (CellHandle) mydetail.getCells().get(i);/取得明细行单元格/设置数据列样式dcell.setProperty(borderBottomColor,#000000);dcell.setProperty(borderBottomStyle,solid);dcell.setProperty(borderBottomWidth,1px);dcell.setProperty(borderLeftColor,#000000);dcell.setProperty(borderLeftStyle,solid);dcell.setProperty(borderLeftWidth,1px);dcell.setProperty(borderRightColor,#000000);dcell.setProperty(borderRightStyle,solid);dcell.setProperty(borderRightWidth,1px);dcell.setProperty(borderTopColor,#000000);dcell.setProperty(borderTopStyle,solid);dcell.setProperty(borderTopWidth,1px);DataItemHandle data = elementFactory.newDataItem(column);data.setResultSetColumn( (String)list.get(i);dcell.getContent().add(data);/为单元格设置Data/列头文件CellHandle hcell = (CellHandle) myheader.getCells( ).get(i);/设置列头样式hcell.setProperty(backgroundColor,#d0d0d0);hcell.setProperty(borderBottomColor,#000000);hcell.setProperty(borderBottomStyle,solid);hcell.setProperty(borderBottomWidth,1px);hcell.setProperty(borderLeftColor,#000000);hcell.setProperty(borderLeftStyle,solid);hcell.setProperty(borderLeftWidth,1px);hcell.setProperty(borderRightColor,#000000);hcell.setProperty(borderRightStyle,solid);hcell.setProperty(borderRightWidth,1px);hcell.setProperty(borde
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电子技术基础试题及答案
- 全国粤教清华版初中信息技术九年级上册第1单元第3课《行走天涯-条件判断》说课稿
- 2024版小学数学全册教学设计
- 陕西省石泉县后柳中学八年级体育教案:三级跳远教学设计
- 打开心门学会与父母沟通 (说课稿)初三下学期主题班会
- 施工现场环境保护与农民工工资支付保障
- 2024新教材高中历史 第一单元 食物生产与社会生活 第2课 新航路开辟后的食物物种交流说课稿 部编版选择性必修2
- 11.2 积的乘方与幂的乘方说课稿初中数学青岛版2012七年级下册-青岛版2012
- 第九课 珍视生命说课稿初中道德与法治统编版五四学制六年级全一册-统编版五四学制2018
- 3. 无线电波的发射和接收说课稿高中物理人教版2019选择性必修 第二册-人教版2019
- 学校辍学学生劝返工作记录卡
- 《细胞工程学》考试复习题库(带答案)
- 粤教花城版小学音乐歌曲《哈哩噜》课件
- 第六讲:RCEP服务贸易与投资解读课件
- 初中数学人教七年级上册(2023年新编) 有理数专题《有理数中的数学思想》教学设计
- 加油站反恐防暴应急预案
- 展筋丹-中医伤科学讲义-方剂加减变化汇总
- 检测检验作业指导书(疾病预防控制中心)
- 咪达唑仑说明书
- 第二章药物转运及转运体
- 装备外观代码
评论
0/150
提交评论