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(); ?????????????????????} ?????????????????????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; ?????????????????????}???????????? ???????????????????? ?????????????????????function?PreviewReport():预览 ???????????????????????????var?style:ReportSettings=?DataGridToMyReport(_Grid,?示例:DataGridToMyReport"); ???????????????????????????myreport.ReportViewer.Instance.Show(new?XML(style.ToXML()),?style.TableData,?style.ParameterData); ?????????????????????} ???????????????????? ?????????????????????function?PrintReport():直接打印 ???????????????????????????示例:DataGridToMyReport"); ???????????????????????????myreport.ReportEngine.PrintAsync(/** ??????????????????????* ??????????????????????*?封装的转换方法,实现DataGid转成报表样式 ??????????????????????* @param?grid:?表格控件(传入前确保表格控件已经设置数据源) ??????????????????????* @param?title:报表标题 ??????????????????????*/ ?????????????????????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?=?表格尾重复 ???????????????????????????style.AutoWidth?=?报表宽度自动递增 ???????????????????????????style.PageByColumn?=?分栏打印 ???????????????????????????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?=?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="日期"?headerText="日期"width="200"/> ??????????????</mx:columns> ???????</mx:DataGrid> </mx:VBox> ? ? 效果图 ? MyReport介绍 MyReport产品网站 ? 相关文章 专栏 备注 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |