MyReport:DataGrid的打印和打印预览
本文说明如何使用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的打印和打印预览相关推荐
- Lodop中特殊符号¥打印设计和预览不同
Lodop中¥符号样式改变问题 Lodop中对超文本样式的解析,虽然说是按照调用的本机ie引擎,但是调用的ie版本可能不同,导致在ie下是一种样式,预览又是另一种样式.可能是有些样式没有具体设置,走的 ...
- 用友T6软件设置打印模板后预览没有变化-用友T6
设置打印模板后预览没有变化 原因分析:操作员在进行打印预览时如果在预览界面选择"保存当前设置",此时会在C盘下生成一个XML格式的文件,无论如何修改单据打印模板,预览调取的都是保存 ...
- 自定义模板、自定义打印机、自动打印:grid++ report自动打印、clodop预览和自动打印(electron+vue)
一.grid++ report选择模板预览和自动打印 这里主要是前后端配合,数据前端传入,打印后端配置. IGridppReport 成员: 封装立即打印,数据格式为: {"reportDa ...
- 水晶报表制作6*4cm的打印纸标签,预览时数据是一页,打印出来却多了一页空白?
欢迎来到一块钱的博客!!! 问题描述:水晶报表 预览时数据是一页,打印出来却多了一页空白.如图: 问题情况分析: 尝试1: 用水晶报表工具Crystal Reports2010设置一个(宽)6X4cm ...
- C#调用CodeSoft Label档打印Label及预览Demo
一.布局如下 二.后端代码实现如下 public string str = "887451254";public string filePath=null;string labFi ...
- ie浏览器html打印预览,Javascript实现IE打印页面设置、预览、首页设置的代码
1.js代码方式 复制代码 代码示例: IE打印页面设置-www.jquerycn.cn .noprint{ display:none; } function printsetup(){ // 打印页 ...
- PB设置打印比例和预览比例
string ls_zoom ls_zoom = 50 //50%的比例 //预览比例 dw_1.modify("datawindow.print.preview.zoom=" + ...
- IE调用WebBrowser控件实现WEB打印、分页打印、无预览打印
WebBrowser控件 WebBrowser ActiveX 控件提供托管的包装. 托管的包装便可以在 Windows 窗体客户端应用程序中显示网页. 你可以使用WebBrowser控件重复中你的应 ...
- Java 打印功能带预览,自定义纸张大小
效果图 package print; import java.awt.*; import java.awt.print.*; import javax.print.PrintService; impo ...
- 增加了页面的打印功能以及预览功能
弹窗部分代码 <div> <el-button type="primary" size="small" @click="previe ...
最新文章
- 分享26个关于Java开发视频教程(免费下载)
- 马斯克明年送3人到太空站旅游:票价3.8亿,仅剩2席,手慢无
- 【数据分析】数据分析基础:SQL重要知识点梳理!
- LeetCode 19删除链表的倒数第N个节点-中等
- 系统新模块增加需要哪些步骤_在1769系统里使用MVI69MCM的有福了
- hive报错:hive create table: Specified key was too long; max key length is 767 bytes
- 卡尔曼滤波算法-简易版
- 阿里云OSS创建Access,并连接到cloudreve
- FFTW3在VS环境下的安装(亲测)
- VPP 助你创新更高效、更灵活的报文处理方案
- 企业经常说绩效管理难,误区在哪?附绩效管理系统解决方案
- java后端使用itextPDF生成PDF文件
- html左右箭头翻页代码,左右箭头图片_js实现图片上显示左右箭头类似翻页效果的代码...
- 广州三本找Java实习经历
- Android动画学习之帧动画二
- 送你4句口诀 云存储选型不再犯难
- CAPL基础篇-----CAPL中的循环
- 利用Python将选择题、多选题导入Anki
- PHM寿命预测内容定稿
- Arcpy的制图模块
热门文章
- 超牛逼!20个开箱即用的 Shell 脚本,拿好了~
- mupdf不支持x64_电脑安装win10的速度很慢,是不是没有制作支持UEFI的启动U盘?
- linux中安装pip镜像怎么设置_linux服务器怎么安装pip?
- mysql索引级别快慢_面试小点-MySQL 的两种索引方法如何提高查询速度
- 步道乐跑怎么刷公里_车子一年跑不到5000公里,怎么保养比较好?这些方法最省钱...
- linux 消息队列_Linux消息队列
- war包怎么解压_微信猫和老鼠主题怎么搞?快来看
- 亲密关系沟通-【认识需求2】-建立良好沟通环境
- 运行loadrunner自带的webtour项目无法启动
- 从0到1开发自动化测试框架(硬货太多,建议阅读)