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 ...
随机推荐
- HBuilder发行原装安装包操作记录
1.在左侧"项目管理器"中选择项目: 2.点击菜单栏中的"发行-->发行为原生安装包": 3.在弹出的App云端打包中填写相关信息: IOS开发者证书配置 ...
- EditText(4)常用属性详解
常用的属性: 显示密码 通过设置EditText的setTransformationMethod()方法来实现隐藏密码或这显示密码. editText.setTransformationMethod( ...
- python使用mysql connection获取数据感知不到数据变化问题
在做数据同步校验的时候,需要从mysql fetch数据和hbase的数据进行对比,发现即使mysql数据变化了,类似下面的代码返回的值还是之前的数据.抽取的代码大概如下: import MySQL ...
- 利用反射给JAVABEAN实例赋值
为简化和统一,需要给javabean实例统一赋值,实现代码如下(已测试) import java.util.ArrayList; import java.util.Date; import java. ...
- JavaScript Json与Map互转以及Map对象的取值方式
Json格式(Json字符串) : var json='{"name": "lily","age":"15"}' Map ...
- JavaScript 兼容新旧版chrome和firefox的桌面通知
1.新/旧版本的chrome和firefox都可支持,IE下不支持因此设置为了在最小化窗口处闪烁显示提示文字. 2.设置为提示窗口显示5秒即关闭. 3.可设置图标和点击提示窗口要跳转到的页面(见输入参 ...
- Python 设计模式--策略模式
策略模式(Strategy Pattern) 策略模式是一种与行为相关的设计模式,允许你在运行时根据指定的上下文确定程序的动作.可以在两个类中封装不同的算法,并且在程序运行时确定到底执行哪中策略. 特 ...
- WebApi实现IHttpControllerSelector问题
一.让Web API路由配置也支持命名空间参数/// <summary> /// controller /// 选择器 /// </summary> ...
- android调用webservice接口获取信息
我的有一篇博客上讲了如何基于CXF搭建webservice,service层的接口会被部署到tomcat上,这一篇我就讲一下如何在安卓中调用这些接口传递参数. 1.在lib中放入ksoap2的jar包 ...
- jmeter普通的接口测试
摘自:后知者.https://www.cnblogs.com/houzhizhe/p/6838731.html jmeter可以做接口测试,其中接口测试的简单操作包括做http脚本(发get/post ...