本文说明如何使用MyReport来实现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>

效果图

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><img src="https://img-my.csdn.net/uploads/201211/29/1354159195_5466.png" alt=""></shapetype>

<shapetype stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><img src="https://img-my.csdn.net/uploads/201211/29/1354159200_6284.png" alt=""><stroke joinstyle="miter"><formulas><f eqn="if lineDrawn pixelLineWidth 0"><f eqn="sum @0 1 0"><f eqn="sum 0 0 @1"><f eqn="prod @2 1 2"><f eqn="prod @3 21600 pixelWidth"><f eqn="prod @3 21600 pixelHeight"><f eqn="sum @0 0 1"><f eqn="prod @6 1 2"><f eqn="prod @7 21600 pixelWidth"><f eqn="sum @8 21600 0"><f eqn="prod @7 21600 pixelHeight"><f eqn="sum @10 21600 0"></f></f></f></f></f></f></f></f></f></f></f></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"><lock aspectratio="t" v:ext="edit"></lock></path></stroke></shapetype>

MyReport介绍

MyReport产品网站

相关文章

MyReport专栏

MyReport:DataGrid的打印和打印预览相关推荐

  1. Lodop中特殊符号¥打印设计和预览不同

    Lodop中¥符号样式改变问题 Lodop中对超文本样式的解析,虽然说是按照调用的本机ie引擎,但是调用的ie版本可能不同,导致在ie下是一种样式,预览又是另一种样式.可能是有些样式没有具体设置,走的 ...

  2. 用友T6软件设置打印模板后预览没有变化-用友T6

    设置打印模板后预览没有变化 原因分析:操作员在进行打印预览时如果在预览界面选择"保存当前设置",此时会在C盘下生成一个XML格式的文件,无论如何修改单据打印模板,预览调取的都是保存 ...

  3. 自定义模板、自定义打印机、自动打印:grid++ report自动打印、clodop预览和自动打印(electron+vue)

    一.grid++ report选择模板预览和自动打印 这里主要是前后端配合,数据前端传入,打印后端配置. IGridppReport 成员: 封装立即打印,数据格式为: {"reportDa ...

  4. 水晶报表制作6*4cm的打印纸标签,预览时数据是一页,打印出来却多了一页空白?

    欢迎来到一块钱的博客!!! 问题描述:水晶报表 预览时数据是一页,打印出来却多了一页空白.如图: 问题情况分析: 尝试1: 用水晶报表工具Crystal Reports2010设置一个(宽)6X4cm ...

  5. C#调用CodeSoft Label档打印Label及预览Demo

    一.布局如下 二.后端代码实现如下 public string str = "887451254";public string filePath=null;string labFi ...

  6. ie浏览器html打印预览,Javascript实现IE打印页面设置、预览、首页设置的代码

    1.js代码方式 复制代码 代码示例: IE打印页面设置-www.jquerycn.cn .noprint{ display:none; } function printsetup(){ // 打印页 ...

  7. PB设置打印比例和预览比例

    string ls_zoom ls_zoom = 50 //50%的比例 //预览比例 dw_1.modify("datawindow.print.preview.zoom=" + ...

  8. IE调用WebBrowser控件实现WEB打印、分页打印、无预览打印

    WebBrowser控件 WebBrowser ActiveX 控件提供托管的包装. 托管的包装便可以在 Windows 窗体客户端应用程序中显示网页. 你可以使用WebBrowser控件重复中你的应 ...

  9. Java 打印功能带预览,自定义纸张大小

    效果图 package print; import java.awt.*; import java.awt.print.*; import javax.print.PrintService; impo ...

  10. 增加了页面的打印功能以及预览功能

    弹窗部分代码 <div> <el-button type="primary" size="small" @click="previe ...

最新文章

  1. 分享26个关于Java开发视频教程(免费下载)
  2. 马斯克明年送3人到太空站旅游:票价3.8亿,仅剩2席,手慢无
  3. 【数据分析】数据分析基础:SQL重要知识点梳理!
  4. LeetCode 19删除链表的倒数第N个节点-中等
  5. 系统新模块增加需要哪些步骤_在1769系统里使用MVI69MCM的有福了
  6. hive报错:hive create table: Specified key was too long; max key length is 767 bytes
  7. 卡尔曼滤波算法-简易版
  8. 阿里云OSS创建Access,并连接到cloudreve
  9. FFTW3在VS环境下的安装(亲测)
  10. VPP 助你创新更高效、更灵活的报文处理方案
  11. 企业经常说绩效管理难,误区在哪?附绩效管理系统解决方案
  12. java后端使用itextPDF生成PDF文件
  13. html左右箭头翻页代码,左右箭头图片_js实现图片上显示左右箭头类似翻页效果的代码...
  14. 广州三本找Java实习经历
  15. Android动画学习之帧动画二
  16. 送你4句口诀 云存储选型不再犯难
  17. CAPL基础篇-----CAPL中的循环
  18. 利用Python将选择题、多选题导入Anki
  19. PHM寿命预测内容定稿
  20. Arcpy的制图模块

热门文章

  1. 超牛逼!20个开箱即用的 Shell 脚本,拿好了~
  2. mupdf不支持x64_电脑安装win10的速度很慢,是不是没有制作支持UEFI的启动U盘?
  3. linux中安装pip镜像怎么设置_linux服务器怎么安装pip?
  4. mysql索引级别快慢_面试小点-MySQL 的两种索引方法如何提高查询速度
  5. 步道乐跑怎么刷公里_车子一年跑不到5000公里,怎么保养比较好?这些方法最省钱...
  6. linux 消息队列_Linux消息队列
  7. war包怎么解压_微信猫和老鼠主题怎么搞?快来看
  8. 亲密关系沟通-【认识需求2】-建立良好沟通环境
  9. 运行loadrunner自带的webtour项目无法启动
  10. 从0到1开发自动化测试框架(硬货太多,建议阅读)