RDLC报表总结
这2天纠结的报表基本上已近完成大部分功能。现在总结一下自己近期的学习成果
首先制作微软RDLC报表由以下三部分构成:1.制作自己的DateSet集合(就是报表的数据集);2.制作自己的报表文件.rdlc文件,用于画做报表样式,里面有微软自带的导出和打印功能,其实就为了少做这2个功能做少部分报表完全还不如自己生成报表灵活。制作显示报表的前台页面aspx文件,基本上就是插入一个ReportViewer然后关联上面的.rdlc文件,注意别忘了更新数据源和插入ScriptManager.
下图是我这是这几天来做的,但基本都是建立这3个文件,网上可以找很多教程可以学习,

这些是我主要参考的网站
http://www.cnblogs.com/JamesLi2015/archive/2010/01/30/1660086.html
http://www.cnblogs.com/lauyee/archive/2010/07/26/1783694.html
http://wenku.baidu.com/view/364f5048c850ad02de8041f5.html
http://www.cnblogs.com/lauyee/archive/2010/07/18/1780124.html
好吧,开始做了,前面都很简单:怎么做一个DataSet,怎么绘制自己的RDLC,这些东西查查什么是数据集,什么是表头,行组,列祖就可以。还有报表里面的参数也可以传入。用LocalReport.SetParameters()方法。
难点发生在要动态构造一个DataSet,网上刚开始给了好多方法,但是自己老是不成功,后来总结出2点
1. 参照的数据集名称错误,假如你的RDLC参照数据集DateSet1,在自动定义新的数据集时候
ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("DataSet1", ds.Tables[0]));,
必须把名字标记成DateSet1,否则会无法识别。还有新的数据集字段必须和原有字段名称一致。
2. 这个最悲剧,竟然是自己的的SQL语句写错了,汗颜不说了...
看看源代码和最后运行图示
- protected void Button1_Click(object sender, EventArgs e)
- {
- //先引用源报表并修改参数
- ReportParameter rp = new ReportParameter("content", "库房");
- this.ReportViewer1.LocalReport.ReportPath = AppDomain.CurrentDomain.BaseDirectory + "Report4.rdlc";
- this.ReportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp });
- string connstring = "Data Source=192.168.1.111;Initial Catalog=SameWayAgile_4_14;Integrated Security=True";
- System.Data.SqlClient.SqlConnection conn1 = new System.Data.SqlClient.SqlConnection(connstring);
- System.Data.SqlClient.SqlCommand command1 = new System.Data.SqlClient.SqlCommand(
- "SELECT GoodsName AS 商品名称, ABCTypeName AS ABC类, MiddleTypeName AS 中类, GoodsTypeName AS 大类, TotalValue AS 金额, ActualQuantity AS 数量 FROM Part_GoodsView", conn1);
- System.Data.SqlClient.SqlDataAdapter ada1 = new System.Data.SqlClient.SqlDataAdapter(command1);
- DataSet ds = new DataSet();
- try
- {
- conn1.Open();
- ada1.Fill(ds);
- ds.DataSetName = "DataSet1";
- }
- catch (Exception ex)
- {
- string ss = ex.Message;
- }
- finally
- {
- conn1.Close();
- command1.Dispose();
- conn1.Dispose();
- }
- if (ds.Tables[0] != null)
- {
- ReportViewer1.LocalReport.DataSources.Clear();
- ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("DataSet1", ds.Tables[0]));
- }
- ReportViewer1.LocalReport.Refresh();
- }

今天做了一个变态的报表,刚开始觉得不能实现,后来了解报表文件特性还是可以实现的,就是矩阵里面嵌套矩阵。哈哈
好了插图

- 上一篇:技术型领导
RDLC报表总结的更多相关文章
- 关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出”
问题:关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出” 办法:在容纳ReportViewer的窗体后台代码中,添加如下代码即可 protected override ...
- rdlc报表DEMO
rdlc报表demo .net 4.0 vs2013 文本框,图像控件,checkbox样式的打印 下载链接
- rdlc报表大小设置
参考:http://stackoverflow.com/questions/427730/how-to-limit-rdlc-report-for-one-page-in-a-pdf 主要设置为:报表 ...
- 基于MVC4+EasyUI的Web开发框架经验总结(15)--在MVC项目中使用RDLC报表
RDLC是一个不错的报表,有着比较不错的设计模式和展现效果,在我的Winform开发里面,使用RDLC也是一个比较方便操作,如可以参考文章<DevExpress的XtraReport和微软RDL ...
- DevExpress的XtraReport和微软RDLC报表的使用和对比
我们开发程序的时候,经常会碰到一些报表,如果是Winform的报表,一般可以采用DevExpress控件组的XtraReport,或者微软的RDLC报表,当然还有一些其他的,在此不再赘述.由于本人在W ...
- 会员管理系统的设计和开发(2)-- RDLC报表的设计及动态加载
在上篇<会员管理系统的设计和开发(1)>介绍了关于会员系统的一些总体设计思路和要点,经过一段时间开发,软件终于完成并发布.在这期间,碰到了不少技术难点,并积累了不少开发心得和经验,本篇继续 ...
- C#制作RDLC报表
报表以前我只做过水晶报表,但是最近发现家里的VS上面居然没有水晶报表,发现水晶报表现在貌似已经不能完全免费的使用了,为了保险起见,就用了VS自带的RDLC报表,用完感觉其实也是够用的嘛~ 建立一RDL ...
- 打印机设置(PrintDialog)、页面设置(PageSetupDialog) 及 RDLC报表如何选择指定打印机
如果一台电脑同时连接多个打印机,而且每个打印机使用的纸张大小各不相同(比如:票据打印钱用的小票专用张,办公打印机用的是A4标准纸),在处理打印类的需求时,如果不用代码干预,用户必须每次打印时,都必须在 ...
- C# WinForm RDLC报表不预览直接连续打印
用微软的RDLC报表直接打印不预览 直接上代码. //打印清单 System.Data.DataTable dt = print_QD(dr); ReportViewer rvDoc = new Re ...
- RDLC报表 在WinForm里运行出现 未能加载文件或程序集microsoft.reportviewer.winforms
做一下记录顺便帮助一下遇到问题的朋友. 做RDLC报表在WinForm运行,在VS里面调试引用了“Microsoft.ReportViewer.Common.dll”和“Microsoft.Repor ...
随机推荐
- 397 Integer Replacement 整数替换
给定一个正整数 n,你可以做如下操作:1. 如果 n 是偶数,则用 n / 2替换 n.2. 如果 n 是奇数,则可以用 n + 1或n - 1替换 n.n 变为 1 所需的最小替换次数是多少?示例 ...
- android调用webservice接口获取信息
我的有一篇博客上讲了如何基于CXF搭建webservice,service层的接口会被部署到tomcat上,这一篇我就讲一下如何在安卓中调用这些接口传递参数. 1.在lib中放入ksoap2的jar包 ...
- 微信小程序组件解读和分析:五、text文本
text文本组件说明: text 文本就是微信小程序中显示出来的文本. text文本组件的示例代码运行效果如下: 下面是WXML代码: [XML] 纯文本查看 复制代码 ? 1 2 3 4 <v ...
- 接口与抽象类的区别-Java
概念-抽象类: 类是对某一个对象的具体描述,抽象类则是对有共通之处的对象,描述共通之处的类;包含抽象方法的类一定的抽象类,抽象类并不一定包含抽象方法;抽象类中可以有数据成员,但数据成员必须是stati ...
- SQLState: 23000
今天登陆项目的时候,报500,日志显示如下: 解决办法是: 首先,删除序列:DROP SEQUENCE sys_log_seq 然后,新建序列:CREATE SEQUENCE sys_log_seq ...
- glassfish中新建数据源(创建数据库连接池)
1.浏览器输入:http://localhost:4848 登录glassfish域管理控制台,默认的用户名和密码是amin和adminadmin.(也可以通过NetBeans的服务选项卡--服务器- ...
- tomcat 访问IP直接访问项目
apache-tomcat-7.0.52\conf下server.xml文件 <Connector connectionTimeout="20000" port=" ...
- Java_数组1_16.5.12
声明整型数组a: int[] a; 这时,只声明了变量a,还应该使用new运算符创建数组: int[] a=new int [100];(数组长度不要求是一个常量:new int[n]会创建一个长度为 ...
- RabbitMQ系列(二)--基础组件
声明:对于RabbitMQ的学习基于某课网相关视频和<RabbitMQ实战指南>一书,后续关于RabbitMQ的博客都是基于二者 一.什么是RabbitMQ RabbitMQ是开源代理和队 ...
- java虚拟机(五)--垃圾回收机制GC5
什么样的对象需要回收 如果对象已经死亡了,就可以进行回收,判断方式如下 1).引用计数器:给对象添加一个计数器,有地方引用,就+1,当引用失效,就-1.当计数器为0时,判断对象不能再使用,但是当对象相 ...