• 一步一步教你使用AgileEAS.NET基础类库进行应用开发WinForm应用篇实现字典的打印


    系列回顾

             从上一篇文章一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实例一个模块(商品字典)开始我带领大家进入WinForm篇,并且使用示例的形式详细的演示了数据表对象的查询与列表的手工绑定。

    本文论点

             今天我将在上一篇文章的基础上介绍信息系统的另一个非常重要的功能,报表与打印,本文要实现的功能就是把商品字典的查询结果(已经显示在UI)打印出来。

             本文结合商品字典的查询我介绍基于ORM实体的报表制做技术与程序中如何应用报表,具体的说就是,如果根据现有的数据对象(数据表对象)建立报表的定义,以及如何在程序中使用报表打印、预览组件,并用商品字典的查询结果(数据表对象)做为报表的填充数据源。

             下面我将先介绍报表的制作:

    制做报表

             运行报表设计器ReportDesigner.Start.exe,选择文件菜单的新建--->对象报表,打开“新建数据对象报表”对话框:

    image

             切换到“数据对象”Tab页,点击“浏览”选择程序集Product.DAL.SQLServer.dll,然后在对象下拉列表中选择“Product.DAL.SQLServer.Product”,然后确定打开设计界面:

    image
             上图是报表设计器根据数据实体自动生成的报表,我们需要对其进行修改,修改的合理和好看一些,并预览一下:

    AE[0]@FNGR6~B]}U3SBT]{W

             在这里面说明一个问题,因为报表是基于数据表对象建立的,没有连接数据库,预览数据是随机生成的,最后我们把报表定义保存到文件中,比如保持为“商品字典.rdl”,这样我们完成了报表的制度。

    使用报表

             报表制做完成了,接下来的任务就是如何在程序中使用这个报表,首先我们在Product.UI中引用RdlEngine.dll、RdlViewer.dll、EAS.Report.DAL.Interface.dll、EAS.Report.Controls.dll四个文件,然后我们来编写工具条的打印按钮的Click事件处理代码: 

     1     private void tsbPrint_Click(object sender, EventArgs e)
     2     {
     3         if (this.lvInfo.Items.Count == 0)
     4         {
     5             MessageBox.Show("没有需要打印的数据!""提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
     6             return;
     7         }
     8 
     9         if (this.printForm == null)
    10             this.printForm = new RDLViewDialog();
    11 
    12         //
    13         System.IO.TextReader textReader = null;
    14         try
    15         {
    16             string fileName = Path.Combine(Application.StartupPath, "Reports\\商品字典.rdl");
    17             textReader = new System.IO.StreamReader(fileName);
    18             this.printForm.SourceRdl = textReader.ReadToEnd();
    19         }
    20         finally
    21         {
    22             if (textReader != null)
    23                 textReader.Close();
    24         }
    25 
    26         this.printForm.DataObject = this.lvInfo.Tag;
    27         this.printForm.PrintPreview();
    28     }

    编译运行程序,看看效果:

    image
     

              有关本例子所涉及的数据表结构请参考基于AgileEAS.NET平台基础类库进行应用开发-总体说明及数据定义一文,有关数据对象模型定义文件、文档、DDL脚本请下载:https://files.cnblogs.com/eastjade/demo.db.doc.sql.rar,本文完整代码下载:Product.Demo.rar

     

    链接

    一步一步教你使用AgileEAS.NET基础类库进行应用开发-系列目录

    AgileEAS.NET平台开发指南-系列目录

    AgileEAS.NET应用开发平台介绍-文章索引

    AgileEAS.NET平台应用开发教程-案例计划

    AgileEAS.NET官方网站

    敏捷软件工程实验室

    QQ群:116773358

  • 相关阅读:
    03-数据结构(C语言版)
    01C语言基础(二)
    python杂项
    mmdetection源码阅读
    建立文件软连接
    python将test01文件夹中的文件剪切到test02文件夹中
    Probabilistic two-stage detection
    Activate-or-Not:learning-customized-activation
    CenterNet和CenterNet2笔记
    OpenCV视频检测人脸
  • 原文地址:https://www.cnblogs.com/eastjade/p/1846194.html
Copyright © 2020-2023  润新知