MyReport:DataGrid的打印和打印预览

news/2024/5/19 18:46:34 标签: datagrid, DataGrid, flex, Flex, FLEX, web, Web, WEB, 引擎, 报表

本文说明如何使用MyReport来实现FLEX.html" title=Flex>Flex DataGrid组件的自动化打印预览和打印功能。

实现代码

<?xmlversion="1.0" encoding="utf-8"?>

<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"

               width="100%"height="100%" fontSize="24" horizontalAlign="center" paddingBottom="40"

               paddingLeft="40" paddingRight="40" paddingTop="40" creationComplete="Init()">

       <mx:Script>

              <![CDATA[

                     import mx.collections.ArrayCollection;

                    

                     import myreport.ReportEngine;

                     import myreport.ReportViewer;

                     import myreport.data.report.CaptionCellSetting;

                     import myreport.data.report.CaptionRowSetting;

                     import myreport.data.report.ReportSettings;

                     import myreport.data.report.TableCellSetting;

                     import myreport.data.report.TableColumnSetting;

                     import myreport.data.report.TableRowSetting;

                    

                     private function Init():void

                     {

                           //初始化时设置DataGrid的数据源

                           _Grid.dataProvider = GetTableData();

                     }

                     private function GetTableData():ArrayCollection

                     {

                           var list:ArrayCollection = new ArrayCollection();

                           for (var i:int =0; i < 25; i++)

                           {

                                  list.addItem({ID: i, 名称: "商品信息XXX 规格XXX 型号XXX", 数量: i+1, 金额: (i+1)*10, 日期: newDate()});

                           }

                          

                           return list;

                     }            

                    

                     private function PreviewReport():void

                     {

                           //预览

                           var style:ReportSettings= DataGridToMyReport(_Grid, "示例:DataGridToMyReport");

                           myreport.ReportViewer.Instance.Show(new XML(style.ToXML()), style.TableData, style.ParameterData);

                     }

                    

                     private function PrintReport():void

                     {

                           //直接打印

                           var style:ReportSettings= DataGridToMyReport(_Grid, "示例:DataGridToMyReport");

                           myreport.ReportEngine.PrintAsync(new XML(style.ToXML()), style.TableData, style.ParameterData);

                     }

 

                     /**

                      *

                      * 封装的转换方法,实现DataGid转成报表样式

                      *

                      * @param grid: 表格控件(传入前确保表格控件已经设置数据源)

                      * @param title报表标题

                      */

                     private function DataGridToMyReport(grid:DataGrid,title:String):ReportSettings

                     {

                           var style:ReportSettings = new ReportSettings();

                           //数据源

                           style.TableData = grid.dataProvideras ArrayCollection;

                           var params:Dictionary = newDictionary();

                           params.Title = title;

                           style.ParameterData = params;

                          

                           //报表样式

                           style.TableHeaderRepeat = true;//表格头重复

                           style.TableFooterRepeat = true;//表格尾重复

                           style.AutoWidth = true;//报表宽度自动递增

                           style.PageByColumn = true;//分栏打印

                           style.SetUnit("px");

                          

                           //标题

                           var captionRow:CaptionRowSetting = new CaptionRowSetting();

                           var caption:CaptionCellSetting = new CaptionCellSetting();

                           caption.Width = style.ClientWidth;

                           caption.Style.FontBold = true;

                           caption.Style.FontSize = 16;

                           caption.Style.TextAlign = "center";

                           caption.Value = "=@Title";

                           captionRow.CaptionCellSettings.push(caption);

                           style.PageHeaderSettings.push(captionRow);

                          

                           //表格

                           var headerRow:TableRowSetting = new TableRowSetting();

                           var contentRow:TableRowSetting = new TableRowSetting();

                           var gridColumns:Array = grid.columns;

                           for each(var gridCol:DataGridColumnin gridColumns)

                           {

                                  if(!gridCol.visible)

                                         continue;

                                  //添加列

                                  var column:TableColumnSetting = new TableColumnSetting();

                                  column.Width = gridCol.width;

                                  style.TableColumnSettings.push(column);

                                 

                                  //添加表格头单元格

                                  var headerCell:TableCellSetting = new TableCellSetting();

                                  headerCell.Style.FontBold = true;

                                  headerCell.Style.TextAlign = "center";

                                  headerCell.Value = gridCol.headerText;

                                  headerRow.TableCellSettings.push(headerCell);

                                 

                                  //添加表格主体单元格

                                  var contentCell:TableCellSetting = new TableCellSetting();

                                  contentCell.Value = "=#" + gridCol.dataField;

                                  contentRow.TableCellSettings.push(contentCell);

                           }

                           style.TableHeaderSettings.push(headerRow);

                           style.TableDetailSettings.push(contentRow);

                           return style;

                     }

 

              ]]>

       </mx:Script>

       <mx:Label text="演示如何用程序动态生成报表样式,实现DataGrid to MyReport" width="100%" textAlign="center"/>

       <mx:Button label="打印预览"click="PreviewReport()"/>

       <mx:Button label="直接打印"click="PrintReport()"/>

       <mx:DataGridid="_Grid" width="600"height="100%" horizontalScrollPolicy="on">

              <mx:columns>

                     <mx:DataGridColumn dataField="ID" headerText="ID"width="56"/>

                     <mx:DataGridColumn dataField="名称" headerText="名称"width="200"/>

                     <mx:DataGridColumn dataField="数量" headerText="数量"width="100"/>

                     <mx:DataGridColumn dataField="金额" headerText="金额"width="100"/>

                     <mx:DataGridColumn dataField="日期" headerText="日期"width="200"/>

              </mx:columns>

       </mx:DataGrid>

</mx:VBox>

 

 

效果图

                                           

 

MyReport介绍

MyReport产品网站

 

相关文章

MyReport专栏

 


http://www.niftyadmin.cn/n/1574554.html

相关文章

在树莓派是安装并配置NTP服务

我们都知道树莓派的小巧和省电节省空间等太多的优势&#xff0c;这里就不一一列举了&#xff0c;那么树莓派就需要长时间的运行&#xff0c;可以724的方式运行&#xff0c;那么我们就把树莓派当作一个小的服务器来运行&#xff0c;可以跑一些小的应用&#xff0c;例如可以在局域…

GFS、MapReduce和BigTable:Google的三种大数据处理系统

Google 在搜索引擎上所获得的巨大成功&#xff0c;很大程度上是由于采用了先进的大数据管理和处理技术。Google 的搜索引擎是针对搜索引擎所面临的日益膨胀的海量数据存储问题&#xff0c;以及在此之上的海量数据处理问题而设计的。 众所周知&#xff0c;Google 存储着世界上最…

java源码Integer.bitCount算法解析,分析原理(统计二进制bit位)

算法&#xff1a;统计整数的二进制表达式中的bit位为1的位数&#xff08;汉明重量&#xff09; 普通算法 public int bitCount(int num) {int count 0;do {if ((num & 1) 1) {count;}num>>1;} while (num > 0);return count; } 应该是最先想到的算法了&#xff…

FlexForAndroid:文件读写

该例子主要介绍如何对Android设备的文件进行读写。源码<?xmlversion"1.0" encoding"utf-8"?><s:Application xmlns:fx"http://ns.adobe.com/mxml/2009" xmlns:s"library://ns.adobe.com/flex/spark" applicationDPI"1…

Hadoop大数据处理框架

Hadoop 是一个处理、存储和分析海量的分布式、非结构化数据的开源框架。最初由 Yahoo 的工程师 Doug Cutting 和 Mike Cafarella 在 2005 年合作开发。后来&#xff0c;Hadoop 被贡献给了 Apache 基金会&#xff0c;成为 Apache 基金会的开源项目。 Hadoop 系统简介 Hadoop 是…

jsp页面代码的加载顺序

总结:java>jshtml 1、即写在<%%>中的Java代码优先加载 2、jsp页面从上到下依次执行 3、window.ready或$(funciton)是文档结构加载完之后执行但不包括图片等非文字媒体文件&#xff1b; 4、window.onload&#xff08;与上一个做比较&#xff09;指页面上包括图片等元素…

Flex:MyReport报表引擎2.7.3.0新功能——甘特图

新增甘特图控件&#xff0c;可以制作项目管理类的报表例子1&#xff1a;年-月时间刻度&#xff0c;显示项目的计划进度和实际完成进度&#xff0c;适用于项目周期较长的情况。例子2&#xff1a;月-日时间刻度&#xff0c;显示项目的计划进度和实际完成进度&#xff0c;周六日背…

2020 年互联网大厂薪资出炉!

最近看网上有人爆料 2020 互联网大厂校招生薪资情况&#xff0c;这份榜单中包含了 10 家公司&#xff0c;其中有 4 家是我秋招中拿到 offer 且谈过薪资的。 榜单中列出的薪资情况和我了解到的基本一致&#xff0c;而且我也问了身边很多同学以及抽查了一些 OfferShow 上的爆料&a…