BIRT与WEB整合生成动态表.doc_第1页
BIRT与WEB整合生成动态表.doc_第2页
BIRT与WEB整合生成动态表.doc_第3页
BIRT与WEB整合生成动态表.doc_第4页
BIRT与WEB整合生成动态表.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论