原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(31)-MVC使用RDL报表

这次我们来演示MVC3怎么显示RDL报表,坑爹的微软把MVC升级到5都木有良好的支持报表,让MVC在某些领域趋于短板

我们只能通过一些方式来使用rdl报表。

Razor视图不支持asp.net服务器控件,但是aspx可以,所以用户其实可以通过aspx视图模版来显示rdl报表或者水晶报表。

我是有强迫症的人,我不喜欢在众多razor视图中,让aspx视图鹤立鸡群,所以这节主要是演示rdl在MVC中其中一种用法。

报表都有相似性  数据源-数据集-图表-表组成

在MVC项目中新建一个数据源,这个数据源最后将由数据表、TableAdapter、查询、关系组成,新建后可以点击右键查看。

这里我们用到TableAdapter来演示,首先新建一张表

CREATE TABLE [dbo].[SysSample]([Id] [varchar](50) NOT NULL,[Name] [varchar](50) NULL,[Age] [int] NULL,[Bir] [datetime] NULL,[Photo] [varchar](50) NULL,[Note] [text] NULL,[CreateTime] [datetime] NULL,CONSTRAINT [PK__SysSampl__3214EC075AEE82B9] PRIMARY KEY CLUSTERED
([Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]GO

SysSample

并录入一些测试数据

INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('1','张三',18,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('11','张三',18,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('2','李四',21,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('22','李四',21,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('3','王五',33,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('33','王五',33,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('4','柳六',24,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('44','柳六',24,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('5','X七',65,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('55','X七',65,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')

Test Data

一、创建数据源

二、选择您的数据链接,如果你有链接数据库的直接选择即可

三、新建一个链接,最后它会在web.config生成一个节点

<add name="AppDBConnectionString" connectionString="Data Source=.;Initial Catalog=AppDB;User ID=sa;Password=zhaoyun123!@#;MultipleActiveResultSets=True;Application Name=EntityFramework"
providerName="System.Data.SqlClient" />

四、配置向导

有多种方式供用户选择。我这里方便的使用了sql语句

输入select * from SysSample一条查询语句,接下来全勾上,每个勾都写得很清楚

数据集已经创建完毕

五、创建RDL

新建一个文件夹。专门来存放rdl -----> Reports

在Reports下创建SysSampleReport.rdlc文件

六、为报表创建数据集,数据源选择我们刚刚创建的AppDBDataSet数据源

七、随便添加一个图标常用的饼图和列表(老实说过如果不懂先右键)

上面说的都是创建报表的基础。我们早在asp.net页面已经熟悉了,回到Controller

添加以下方法(type = PDF,Excel,Word )

public ActionResult Reporting(string type = "PDF", string queryStr = "", int rows = 0, int page = 1){//选择了导出全部if (rows == 0 && page == 0){rows = 9999999;page = 1;}GridPager pager = new GridPager(){rows = rows,page = page,sort="Id",order="desc"};List<SysSampleModel> ds = m_BLL.GetList(ref pager, queryStr);LocalReport localReport = new LocalReport();localReport.ReportPath = Server.MapPath("~/Reports/SysSampleReport.rdlc");ReportDataSource reportDataSource = new ReportDataSource("DataSet1", ds);localReport.DataSources.Add(reportDataSource);string reportType = type;string mimeType;string encoding;string fileNameExtension;string deviceInfo ="<DeviceInfo>" +"<OutPutFormat>" + type + "</OutPutFormat>" +"<PageWidth>11in</PageWidth>" +"<PageHeight>11in</PageHeight>" +"<MarginTop>0.5in</MarginTop>" +"<MarginLeft>1in</MarginLeft>" +"<MarginRight>1in</MarginRight>" +"<MarginBottom>0.5in</MarginBottom>" +"</DeviceInfo>";Warning[] warnings;string[] streams;byte[] renderedBytes;renderedBytes = localReport.Render(reportType,deviceInfo,out mimeType,out encoding,out fileNameExtension,out streams,out warnings);return File(renderedBytes, mimeType);}

所以呢。没有传说的那么神秘,靠输出来制作报表

  • List<SysSampleModel> ds把读取到的列表赋予给ds
  • localReport.ReportPath指定报表的路径
  • ReportDataSource reportDataSource = new ReportDataSource("DataSet1", ds);指定数据集 DataSet1

填充好数据集,最后的前端就是调用 Reporting这个方法

在谷歌浏览器输出PDF可以直接在网页预览,如果是其他格式将获得保存对话框弹出

右键选择打印可以接本地打印机

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(31)-MVC使用RDL报表相关推荐

  1. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(12)-系统日志和异常的处理②...

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(12)-系统日志和异常的处理② 上一讲我们做了日志与异常的结果显示列表,这一节我们讲要把他应用系统中来. ...

  2. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码]...

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码] 文件上传这东西说到底有时候很痛,原来的asp.net服务器 ...

  3. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(39)-在线人数统计探讨

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(39)-在线人数统计探讨 系列目录 基于web的网站在线统计一直处于不是很精准的状态!基本上没有一种方法可 ...

  4. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(34)-文章发布系统①-简要分析...

    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(34)-文章发布系统①-简要分析 原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入 ...

  5. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(13)-系统日志和异常的处理③

    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(13)-系统日志和异常的处理③ 参考文章: (1)构建ASP.NET MVC4+EF5+EasyUI+Unity ...

  6. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(10)-系统菜单栏[附源码]

    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(10)-系统菜单栏[附源码] 原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后 ...

  7. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】...

    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-[过滤器+Cache] 原文:构建ASP.NET MVC4+EF5+EasyUI+ ...

  8. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单...

    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单 原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后 ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(36)-文章发布系统③-kindeditor使用...

    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(36)-文章发布系统③-kindeditor使用 原文:构建ASP.NET MVC4+EF5+EasyUI+Un ...

最新文章

  1. kangle php集成环境包,PHP探针-UPUPW环境集成包KANGLE专用版 | bftxjc.com contacts
  2. leetcode 35. 搜索插入位置
  3. 计算机健康教育应用的意义,健康教育路径计算机模块的建立与应用  (3)
  4. oracle结束过程,oracle 结束被锁的包或存储过程
  5. Ogre共享骨骼与两种骨骼驱动方法
  6. eShopOnContainers 知多少[9]:Ocelot gateways
  7. Selenium Java教程– Selenium中的类名定位器
  8. mac mysql 的lb_四层LB和七层LB
  9. MATLAB 在图像处理和机器视觉的应用举例01 - 官网培训视频笔记(下)分类/灰度共生矩阵/纹理分类学习
  10. HttpURLConnection与HttpClient提交FORM表单参数请求工具类
  11. 字体系列之文字样式(CSS、HTML)
  12. 目前最全的R语言-图片的组合与拼接
  13. Redis笔记 -- 链表和链表节点的API函数(三)
  14. Spring.net 容器注入是替换(后处理器appConfigPropertyHolder)
  15. 面象对象与面象过程内存分区
  16. oracle语句查询时间范围,oracle时间范围查询
  17. 【PEST++】03 水文模型不确定性和灵敏度分析
  18. 【建议收藏】10个适合程序员逛的在线社区
  19. 公司小程序,公众号申请支付流程
  20. Python | 基础学习(二)函数基础、非数字型变量(列表、元组、字典、字符串)、切片、for循环

热门文章

  1. windows server 2012 用sysdba登录报错 ORA-01031
  2. STM32中EXTI和NVIC的关系
  3. es6箭头函数(=)与展开特性运算符(...)的使用
  4. mono和monodevelop源码编译安装
  5. JAVASCRIPT函数式编程
  6. 某内存池中的指针用法
  7. FlashDevelop Android开发.md
  8. Bloomberg开源面向OCaml的JavaScript后端BuckleScript
  9. EOS共识机制——DPoS代理权益证明
  10. angular 命令行项目_Angular命令行界面介绍