← 返回所有博客文章

在商业报表系统中,我们常会遇到这样的报表类型需求:数据清单、图表报表、分栏报表、分组报表、并排报表、交叉报表、套打报表等,更为复杂的需求会有动态过滤、动态排序、向下钻取和贯穿专区等。本文主要讲述的是如何在 ActiveReports 中实现套打报表功能。

本文将结合增值税发票打印为了,讲解套打报表的实现步骤:

1、创建报表,添加背景图片,并根据打印参数来显示或者隐藏背景图片

在工程中添加ActiveReports报表,报表模板选择【ActiveReports 7页面报表】,命名为rptInvoice.rdlx

ActiveReports 7页面报表

报表添加完成之后,在报表资源管理器中的【嵌入式图像】节点中添加增值税发票背景图片

增值税发票

从VS工具箱中将 Image 控件添加到报表设计界面,并设置 Image 控件的值,如下所示:

背景图片

可见性

添加完背景图片之后,我们在相应文字添加 TextBox 控件用于显示数据,最终得到的设计效果如下:

ActiveReports 设计界面 

 

2、自定义 WebViewer 控件,在工具栏中添加【套打】按钮,当用户点击【套打】时运行报表(不显示背景图)并打印

在工程的ASPX页面中添加两个 WebViewer 控件,一个用于报表预览,一个用于报表打印. 添加完成之后设置两个WebViewer控件的ViewerType为FlashViewer, 并设置FlashViewerOptions中的UseClientApi为True.

在页面中添加以下 JavaScript ,用于报表的打印操作:

    <script language="javascript" type="text/javascript">
        var viewer, viewerforprint;
        var pages;
 
        window.onload = function () {
            GrapeCity.ActiveReports.Viewer.OnLoad("WebViewer1", function () {
                viewer = GrapeCity.ActiveReports.Viewer.Attach("WebViewer1");
                viewer.setEventsHandler({
                    OnToolClick: function (e) {
 
                        // 用户点击【套打】按钮时触发
                        if (e.Tool == "套打") {
                            printreport();
                            return false;
                        }
                    },
                    OnLoadProgress: function (e) {
                        if (e.State == "Completed") {
                            pages = e.PageCount;
                        }
                    }
                });
            });
 
            GrapeCity.ActiveReports.Viewer.OnLoad("WebViewer2", function () {
                viewerforprint = GrapeCity.ActiveReports.Viewer.Attach("WebViewer2");
            });
        }
 
        // 套打操作
        function printreport() {            
            var orient = "None";
            var scale = "None";
            var from = 1;
            var to = pages;
            var ops = viewerforprint.CreatePrintOptions();
            ops.AdjustPaperOrientation = orient;
            ops.ScalePages = scale;
            ops.ClearPageRanges();
            ops.AddPageRange(from, to);
 
            viewerforprint.Print(ops);
 
        }
 
    </script>

 

切换到ASPX后台代码视图, 添加以下代码在 WebViewer 工具栏中添加[套打]按钮:

    private void CustomizeToolbar()
    {
        // 隐藏打印范围按钮
        ToolBase btnRang = WebViewer1.FlashViewerToolBar.Tools["PageRangeButton"];
        btnRang.Visible = false;
 
        // 隐藏打印按钮
        ToolBase btnPrint = WebViewer1.FlashViewerToolBar.Tools["PrintButton"];
        btnRang.Visible = false;
 
        ToolButton btnCPrint = Tool.CreateButton("套打");
        btnCPrint.Caption = "套打";
        btnCPrint.ToolTip = "套打";
        btnCPrint.ClickNavigateTo = "javascript:alert('aaa')";
 
        WebViewer1.FlashViewerToolBar.Tools.Insert(0, btnCPrint);
 
    }

 

运行结果:

ActiveReports 报表套打

 

源码下载:VS2010 + ActiveReports 7