百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

ActiveReports 报表控件入门教程之选择页面报表和区域报表

ztj100 2024-12-10 22:19 14 浏览 0 评论

本篇文章包括以下部分:

1.区域报表和RDL/页面报表的区别

  • 两种报表的具体应用场景

  • 区域报表和RDL/页面报表的区别

  • 项目中如何选择报表类型

2.区域报表和页面报表数据源设置

3.报表浏览器加载报表的区别

1.区域报表和RDL页面报表的区别

1.1首先我们来看一下两种报表的具体应用场景

固定页面布局报表:ActiveReports 中首创的一种 .NET报表模型,运行时的报表页面与设计时完全保持一致,各控件的位置和大小都不会改变,非常适合创建传统的纸质报表格式,如用于设计财务单据、银行帐票等格式要求严格的报表。

RDL页面布局报表:主要通过数据区域来控制报表的布局,能自动实现数据分页显示,并提供最强大的报表交互能力,可轻松实现各种交互式报表。报表页面的控件可以扩大或缩小;通过参数报表实现数据过滤;支持设置交互式排序;您可以设置钻取报表,在初始状态下隐藏细节,点击按钮后打开;您也可以添加指向其它报表的钻取链接,以及指向报表内其它区域的书签链接等。

区域布局报表:ActiveReports产品的典型报表模型,区域布局中报表被分为不同的区域。缺省情况下的区域布局报表包含页眉,明细和页脚区域,可以进一步插入报表头/报表尾和分组头/分组尾区域。这种布局方式也在Access和水晶报表中得到广泛使用。您可以运用已经掌握的C#和VB.NET知识,并结合区域布局报表模型提供的丰富API实现子报表、交叉报表、分组报表、分栏报表、主从报表等多种多样的报表系统。

1.2区域报表和RDL/页面报表的区别

区域报表和RDL/页面报表最主要的区别是组成结构,区域报表顾名思义是有多个区域组成,区域报表最终由多个区域组合呈现,包括表头、详细区域和表尾组成。

RDL/页面报表最终呈现布局中只有一个单位就是-页面,页面报表最终呈现效果是由多个页面组合,进一步说,RDL页面布局最终页数取决于需要展示的数据量。固定页面报表主要强调的是预览效果和打印效果完全一致。非常适合创建传统的纸质报表格式,如用于设计财务单据、银行帐票等格式要求严格的报表。

1.3项目中如何选择报表类型

关于在实际项目中如何选择报表,往往是主观因素影响大一些,每个开发人员关注的角度不同会影响选择结果不同。例如,有些程序员会更加倾向把报表分割成规整的页眉、数据区域和页脚三个部分,这样他就会认为区域报表比较适应项目需求而选择区域报表。还有其他程序员需要使所有报表页面基于一张报表模板,这个时候他们就会选择RDL页面报表。再举个例子,如果需要使用多个数据源,RDL页面报表也是很好的选择。

如果报表中需要交互式报表分析(向下和贯穿钻取、动态的数据排序),另外迷你图、数据条、地图控件、多数据源等需求也需要使用页面报表实现。

当然,ActiveReports 提供产品文档、随机安装示例和在线示例等多方面资源来为您选择报表类型提供大量的指导,协助您选择正确的报表模板,节省开发时间。

2.区域报表和RDL/页面报表数据源设置

2.1RDL/页面报表设计时设计数据源步骤如下:

第一步: 在工程中创建一个名为 PageReport_DataSource_DesignTime.rdlx 的RDL报表

第二步:从Visual Studio菜单栏中的“视图”->“其他窗口”->“报表资源管理器”中打开ActiveReports报表资源管理器,此时,你可以看到“数据源”节点,在该节点上鼠标右键选择“添加数据源”菜单项,在弹出的“报表数据源”对话框中按照向导步骤连接到一个Access数据库,如下图:

点击“确定”按钮,完成数据源创建操作,此时,在报表资源管理器窗口中的“数据源”节点下新增了一个名为“DataSource1”的子节点,在该节点上点击鼠标右键,选择“添加数据集”菜单项,在弹出对话框的“查询”选项卡中写入以下SQL查询语句 [Select * from 产品],然后点击“确定”按钮完成数据集创建操作。返回到报表资源管理窗口之后,点击“DataSet1”节点,可以看到SQL查询语句返回查询结果的全部数据字段。

第三步:在Visual Studio工具箱中的“ActiveReports”分类下将表格控件(Table)拖拽到报表设计界面,然后点击表格明细行中的单元格,此时,会自动显示DataSet1中数据集中的全部字段,然后,为每个单元格指定需要绑定的字段。

2.1页面报表运行时设置数据源关键代码如下:

 private void 运行时数据源页面报表ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        GrapeCity.ActiveReports.PageReport pReport1 = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo("PageReport_DataSource_RunTime.rdlx"));
        viewer1.LoadDocument(pReport1.Document); 
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        viewer1.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(viewer1_LocateDataSource);
    }
    void viewer1_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
    {
        if (args.DataSourceName == "DataSource1")
        {
 if (args.DataSetName == "DataSet1")
 {
 args.Data = GetDataSource;
 }
        }
    }
    private DataTable GetDataSource
    {
        DataTable dt = new DataTable;
        dt.Columns.Add("产品编号");
        dt.Columns.Add("产品名称");
        dt.Columns.Add("单价");
        dt.Columns.Add("库存量");
        dt.Rows.Add("A10002", "苹果", 20, 50);
        dt.Rows.Add("A15681", "香蕉", 20, 50);
        dt.Rows.Add("A15681", "菠萝", 20, 50);
        return dt;
    }

3.报表浏览器加载报表的区别

页面报表和区域报表在浏览方式上有差别,本节以WebViewer为例,来查看加载页面报表和区域报表区别:

GrapeCity.ActiveReports.PageReport rpt = new GrapeCity.ActiveReports.PageReport; 
rpt.Load(new System.IO.FileInfo(Server.MapPath("")+"\\invoice.rdlx"));
WebViewer1.Report = rpt;

WebViewer加载基于代码的区域报表:

SecionReport rpt = new SecionReport; 
WebViewer1.Report = rpt; 

WebViewer加载基于XML的区域报表:

SectionReport sr = new SectionReport; 
sr.LoadLayout(Server.MapPath("") + "\\Invoice.RPX);
WebViewer1.Report = sr;

以上就是ActiveReports报表控件入门教程的全部内容,这三篇文章是使用ActiveReports报表控件必须要了解的只是,希望通过阅读本系列文章能让您在ActiveReports报表控件使用上有一个概括性的了解,顺利的完成实际开发中的工作。

葡萄城经典UI产品新年大促,惊喜折扣礼品送不停!

本站文章除注明转载外,均为本站原创或翻译

相关推荐

使用Python编写Ping监测程序(python 测验)

Ping是一种常用的网络诊断工具,它可以测试两台计算机之间的连通性;如果您需要监测某个IP地址的连通情况,可以使用Python编写一个Ping监测程序;本文将介绍如何使用Python编写Ping监测程...

批量ping!有了这个小工具,python再也香不了一点

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部下午好,我的网工朋友。在咱们网工的日常工作中,经常需要检测多个IP地址的连通性。不知道你是否也有这样的经历:对着电脑屏...

python之ping主机(python获取ping结果)

#coding=utf-8frompythonpingimportpingforiinrange(100,255):ip='192.168.1.'+...

网站安全提速秘籍!Nginx配置HTTPS+反向代理实战指南

太好了,你直接问到重点场景了:Nginx+HTTPS+反向代理,这个组合是现代Web架构中最常见的一种部署方式。咱们就从理论原理→实操配置→常见问题排查→高级玩法一层层剖开说,...

Vue开发中使用iframe(vue 使用iframe)

内容:iframe全屏显示...

Vue3项目实践-第五篇(改造登录页-Axios模拟请求数据)

本文将介绍以下内容:项目中的public目录和访问静态资源文件的方法使用json文件代替http模拟请求使用Axios直接访问json文件改造登录页,配合Axios进行登录请求,并...

Vue基础四——Vue-router配置子路由

我们上节课初步了解Vue-router的初步知识,也学会了基本的跳转,那我们这节课学习一下子菜单的路由方式,也叫子路由。子路由的情况一般用在一个页面有他的基础模版,然后它下面的页面都隶属于这个模版,只...

Vue3.0权限管理实现流程【实践】(vue权限管理系统教程)

作者:lxcan转发链接:https://segmentfault.com/a/1190000022431839一、整体思路...

swiper在vue中正确的使用方法(vue中如何使用swiper)

swiper是网页中非常强大的一款轮播插件,说是轮播插件都不恰当,因为它能做的事情太多了,swiper在vue下也是能用的,需要依赖专门的vue-swiper插件,因为vue是没有操作dom的逻辑的,...

Vue怎么实现权限管理?控制到按钮级别的权限怎么做?

在Vue项目中实现权限管理,尤其是控制到按钮级别的权限控制,通常包括以下几个方面:一、权限管理的层级划分...

【Vue3】保姆级毫无废话的进阶到实战教程 - 01

作为一个React、Vue双修选手,在Vue3逐渐稳定下来之后,是时候摸摸Vue3了。Vue3的变化不可谓不大,所以,本系列主要通过对Vue3中的一些BigChanges做...

Vue3开发极简入门(13):编程式导航路由

前面几节文章,写的都是配置路由。但是在实际项目中,下面这种路由导航的写法才是最常用的:比如登录页面,服务端校验成功后,跳转至系统功能页面;通过浏览器输入URL直接进入系统功能页面后,读取本地存储的To...

vue路由同页面重定向(vue路由重定向到外部url)

在Vue中,可以使用路由的重定向功能来实现同页面的重定向。首先,在路由配置文件(通常是`router/index.js`)中,定义一个新的路由,用于重定向到同一个页面。例如,我们可以定义一个名为`Re...

那个 Vue 的路由,路由是干什么用的?

在Vue里,路由就像“页面导航的指挥官”,专门负责管理页面(组件)的切换和显示逻辑。简单来说,它能让单页应用(SPA)像多页应用一样实现“不同URL对应不同页面”的效果,但整个过程不会刷新网页。一、路...

Vue3项目投屏功能开发!(vue投票功能)

最近接了个大屏项目,产品想在不同的显示器上展示大屏项目不同的页面,做出来的效果图大概长这样...

取消回复欢迎 发表评论: