原文地址:http://www.cnblogs.com/wuhuacong/p/4109833.html

RDLC是一个不错的报表,有着比较不错的设计模式和展现效果,在我的Winform开发里面,使用RDLC也是一个比较方便操作,如可以参考文章《DevExpress的XtraReport和微软RDLC报表的使用和对比》或者《会员管理系统的设计和开发(2)-- RDLC报表的设计及动态加载》进行了解。但是基于MVC方式,如何构建和展现RDLC报表呢?本文主要介绍如何在基于MVC4+EasyUI的Web开发框架上进行RDLC的集成和使用。

1、RDLC绑定数据源

RDLC的报表设计,是使用VS直接进行编辑的,因此它不管是在Web上,还是在Winform上,设计的方式都差不多,好像绑定数据源的方式有一点不同,WInform的可以选择基于,而Web的只能基于数据库连接方式构建数据绑定对象。

它们两者之间在创建数据源的时候,弹出的对话框选择界面如下所示,看起来Winform的方式选择数据源的方式很多样化。

最终,通过Web方式构建了一个数据集,并在设计视图里面设计一个用户的报表界面,并绑定它们对应的字段,具体如下所示。

在RDLC的设计界面上,它们的操作内容好像是一样的,没有什么差异,可以使用各种数学函数SUM、COUNT等,也可以使用对字段的表达式,格式样式等方式,从而方便构建出一些准确、美观的报表,这部分可以参考文中开始的那两篇引用文章,这里就不再进行细节上的赘述,因为它们是一样的。

2、在Web界面上创建一些功能按钮和实现

我们在MVC项目里面,创建并保存好RDLC报表文件到对应的Report目录上,如下所示。

然后创建一个视图,并在视图里面构建一些按钮,方便构建查询不同的报表格式功能,具体效果如下所示。

HTML代码如下所示

    <div style="padding:10px; border:1px solid black"><div><a href="@Url.Action("UserRdlcReport", new { format = "Image" })" class="easyui-linkbutton" data-options="iconCls:'icon-view'">图片输出</a><a href="@Url.Action("UserRdlcReport", new { format = "PDF" })" class="easyui-linkbutton" data-options="iconCls:'icon-view'"> PDF输出</a><a href="@Url.Action("UserRdlcReport", new { format = "Excel" })" class="easyui-linkbutton" data-options="iconCls:'icon-view'">Excel输出</a><a href="@Url.Action("UserRdlcReport", new { format = "Word" })" class="easyui-linkbutton" data-options="iconCls:'icon-view'">Word输出</a></div></div><div id="autoUpdate" style="display: none; overflow-y: auto" class="SlideContainer"><table width="100%" height="100%"><tr><td><table><tr><td></td><td></td></tr></table></td></tr><tr><td><iframe id="myReport" width="100%" height="800"></iframe></td></tr></table></div>

完成这些布局后,我们还需要在对应的控制器里面,对RDLC的报表进行数据绑定并呈现出来。

绑定RDLC报表,并赋值对应的数据源操作如下所示。

            LocalReport localReport = new LocalReport();localReport.ReportPath = Server.MapPath("~/Report/WHC.UserReport.rdlc");var dt = baseBLL.GetAll();ReportDataSource reportDataSource = new ReportDataSource("DataSet1", dt);localReport.DataSources.Add(reportDataSource);

呈现的操作代码如下所示,默认我们以图片进行展现。

            Warning[] warnings;string[] streams;byte[] renderedBytes;renderedBytes = localReport.Render(reportType,deviceInfo,out mimeType,out encoding,out fileNameExtension,out streams,out warnings);return File(renderedBytes, (format.ToLower() == "image") ? "image/jpeg" : mimeType);

最终默认可以看到图片的报表展现效果。

当然,我们上面还有其他功能的操作,如PDF功能的展现,这个是一个不错的格式展现,每页分的很好,如果在IE里面,会独立打开PDF文件;如果是Chrome浏览器,则会在浏览器里面直接打开,比较好。

当然,Excel和Word就只能下载进行查看了,因为浏览器并不支持直接在上面进行预览查看的了,除非借助其他控件或者做法。

3、图片内容的连续输出

我们了解RDLC的话,应该知道,一般RDLC报表,它都是通过一个DeviceInfo的信息进行展现的,如下所示是一个标准的DeviceInfo对象。

            string deviceInfo ="<DeviceInfo>" +"  <OutputFormat>" + deviceType + "</OutputFormat>" +"  <PageWidth>8.5in</PageWidth>" +"  <PageHeight>11in</PageHeight>" +"  <MarginTop>0.5in</MarginTop>" +"  <MarginLeft>1in</MarginLeft>" +"  <MarginRight>1in</MarginRight>" +"  <MarginBottom>0.5in</MarginBottom>";

但是这样的内容,如果展现图片的话,就只会展示一页的内容,一般是800的高度这样子,但是我的报表里面可能有很多记录,如何能够让它全部展现出来呢?

方法是有的,不过不是很完美,就是需要计算大概的尺寸,然后修改PageHeight的数值,让它动态的删除最大的记录,达到全部内容都可以输出看到。

为了达到这个目的,我对图片格式输出的报表,对它的高度进行了一个简单的计算,然后换成它的标准高度,这样代码如下所示。

            if(format.ToLower() == "image"){double inchValue = (dt.Count / 37.0) * 11; deviceInfo += string.Format("  <PageHeight>{0}in</PageHeight>", inchValue);}else{deviceInfo += "  <PageHeight>11in</PageHeight>";}

最后界面代码如下所示。

项目中使用RDLC报表相关推荐

  1. 在SpringBoot项目中使用Ureport2报表工具

    SpringBoot项目中使用Ureport2报表工具 1.在spring boot项目中使用Ureport2报表工具,首先需要在maven的pom.xml中添加Ureport2的依赖. <!- ...

  2. C# rdlc 报表学习总结

    C# 创建报表过程详解 http://www.jb51.net/article/68481.htm 本文给大家介绍的是使用vs2012 c#创建报表的全部过程的记录,十分的详细,有需要的小伙伴可以参考 ...

  3. RDLC 报表参数、常量及常用表达式的使用方法(上)

    一. ASP.NET 程序为RDLC报表提供参数   在我们的报表中,往往需要从ASP.NET程序提供一些参数显示在报表的指定位置,第一篇中我们已经讲过怎样传递一个数据集,但是我们只需要一个值,总 不 ...

  4. OEA 框架中集成的 RDLC 报表介绍

    之前 OEA 一直用着一个 Delphi 开发的报表,所以两年来我一直就想在 OEA 中构建一个纯 .NET 的报表模块,但是一想到要开发复杂的报表引擎和设计器就觉得麻烦.所以这事一直拖着.最近开始研 ...

  5. 在Sharepoint 2010中使用ReportViewer控件展示RDLC报表

    微软的Visual studio提供了ReportViewer控件以及RDLC报表设计工具.下文主要介绍如何在Sharepoint 2010项目开发中使用ReportViewer和RDLC生成项目报表 ...

  6. [转]MVC中如何使用RDLC报表

    本文转自:http://www.cnblogs.com/BlueWoods/archive/2009/04/27/1444311.html 在用MVC开发项目的时候遇到了一个问题,如何运用RDLC报表 ...

  7. winform中rdlc报表配置

    例如:学生成绩打印,打印[序号,姓名,班级,成绩]四列 第一步:首先创建主窗体Form_Main,添加打印按钮 第二步:新建打印窗体Form_Print,添加ReportViewer组件 第三步:新建 ...

  8. 传智健康项目中相关知识点介绍(如图片存储,发送短信,定时调度,统计报表...)

    1. 图片存储方案 1.1 介绍 在实际开发中,我们会有很多处理不同功能的服务器.例如: 应用服务器:负责部署我们的应用 数据库服务器:运行我们的数据库 文件服务器:负责存储用户上传文件的服务器 分服 ...

  9. ajax调用fastreport,使用Ajax更新ASP.Net MVC项目中的报表对象

    Ajax技术显著加快了Web应用程序的速度.另外,视觉效果方面也有提升.大家都同意,每次点击按钮时整个页面都会被刷新这一点不太友好.如果你的网速不是很快,那么这个过程会很烦人,因为所有的元素都会先消失 ...

最新文章

  1. 笔记:2016-06-03
  2. sar偏移量追踪技术_论文推荐 | 吴文豪:基于几何配准的多模式SAR影像配准及其误差分析...
  3. mongo 改字段名_一日一技:修改MongoDB集合中的字段名
  4. 洛谷-P2801 教主的魔法 分块
  5. html div三角形,【div】纯CSS绘制三角形
  6. 从零开始学前端:表单制作 --- 今天你学习了吗?(CSS:Day05)
  7. bat文件去掉变量 字符串中的空格
  8. vxworks linux 多线程api,vxWorks操作系统的多线程实现研究
  9. LeetCode 285. Inorder Successor in BST
  10. MyBatis的9种设计模式,我猜你不知道
  11. java线程卖票_Java通过卖票理解多线程
  12. SQL Server 2008使用问题集锦
  13. OpenCV-图像处理(24、直方图计算)
  14. 文字识别:Tesseract OCR
  15. 电商产品设计:如何设计产品分销体系
  16. brew - 切换为国内源
  17. harbor高可用部署
  18. android 蓝牙ble调试助手,Android蓝牙调试助手源码分享
  19. 网络安全工程师考证指南
  20. 系统测试报告编写规范

热门文章

  1. OpenGL Compute Shader Raytracing 计算着色器光线追踪的实例
  2. OpenGL着色器将纹理应用于全屏四边形
  3. QT的QStyleOption类的使用
  4. QT的QSemaphoreReleaser类的使用
  5. mysql数据库引擎博客_mysql 数据库引擎常识全集
  6. valid parentheses java_Valid Parentheses Java
  7. B01_NumPy Ndarray对象(ndarray内容结构,参数,多维,最小维度,dtype参数)
  8. 做移动应用使用地图API时需要注意的问题
  9. 处理时间_6_SQL Server常见的时间格式转换
  10. 移动时捕捉不到基点_CAD入门学习攻略:CAD软件中对象捕捉功能使用技巧汇总