这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语句写错了,汗颜不说了...

看看源代码和最后运行图示

[csharp] view plaincopy

  1. protected void Button1_Click(object sender, EventArgs e)
  2. {
  3. //先引用源报表并修改参数
  4. ReportParameter rp = new ReportParameter("content", "库房");
  5. this.ReportViewer1.LocalReport.ReportPath = AppDomain.CurrentDomain.BaseDirectory + "Report4.rdlc";
  6. this.ReportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp });
  7. string connstring = "Data Source=192.168.1.111;Initial Catalog=SameWayAgile_4_14;Integrated Security=True";
  8. System.Data.SqlClient.SqlConnection conn1 = new System.Data.SqlClient.SqlConnection(connstring);
  9. System.Data.SqlClient.SqlCommand command1 = new System.Data.SqlClient.SqlCommand(
  10. "SELECT GoodsName AS 商品名称, ABCTypeName AS ABC类, MiddleTypeName AS 中类,  GoodsTypeName AS 大类, TotalValue AS 金额, ActualQuantity AS 数量 FROM Part_GoodsView", conn1);
  11. System.Data.SqlClient.SqlDataAdapter ada1 = new System.Data.SqlClient.SqlDataAdapter(command1);
  12. DataSet ds = new DataSet();
  13. try
  14. {
  15. conn1.Open();
  16. ada1.Fill(ds);
  17. ds.DataSetName = "DataSet1";
  18. }
  19. catch (Exception ex)
  20. {
  21. string ss = ex.Message;
  22. }
  23. finally
  24. {
  25. conn1.Close();
  26. command1.Dispose();
  27. conn1.Dispose();
  28. }
  29. if (ds.Tables[0] != null)
  30. {
  31. ReportViewer1.LocalReport.DataSources.Clear();
  32. ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("DataSet1", ds.Tables[0]));
  33. }
  34. ReportViewer1.LocalReport.Refresh();
  35. }

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

好了插图

分享到: 

RDLC报表总结的更多相关文章

  1. 关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出”

    问题:关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出” 办法:在容纳ReportViewer的窗体后台代码中,添加如下代码即可 protected override ...

  2. rdlc报表DEMO

    rdlc报表demo  .net 4.0  vs2013 文本框,图像控件,checkbox样式的打印 下载链接

  3. rdlc报表大小设置

    参考:http://stackoverflow.com/questions/427730/how-to-limit-rdlc-report-for-one-page-in-a-pdf 主要设置为:报表 ...

  4. 基于MVC4+EasyUI的Web开发框架经验总结(15)--在MVC项目中使用RDLC报表

    RDLC是一个不错的报表,有着比较不错的设计模式和展现效果,在我的Winform开发里面,使用RDLC也是一个比较方便操作,如可以参考文章<DevExpress的XtraReport和微软RDL ...

  5. DevExpress的XtraReport和微软RDLC报表的使用和对比

    我们开发程序的时候,经常会碰到一些报表,如果是Winform的报表,一般可以采用DevExpress控件组的XtraReport,或者微软的RDLC报表,当然还有一些其他的,在此不再赘述.由于本人在W ...

  6. 会员管理系统的设计和开发(2)-- RDLC报表的设计及动态加载

    在上篇<会员管理系统的设计和开发(1)>介绍了关于会员系统的一些总体设计思路和要点,经过一段时间开发,软件终于完成并发布.在这期间,碰到了不少技术难点,并积累了不少开发心得和经验,本篇继续 ...

  7. C#制作RDLC报表

    报表以前我只做过水晶报表,但是最近发现家里的VS上面居然没有水晶报表,发现水晶报表现在貌似已经不能完全免费的使用了,为了保险起见,就用了VS自带的RDLC报表,用完感觉其实也是够用的嘛~ 建立一RDL ...

  8. 打印机设置(PrintDialog)、页面设置(PageSetupDialog) 及 RDLC报表如何选择指定打印机

    如果一台电脑同时连接多个打印机,而且每个打印机使用的纸张大小各不相同(比如:票据打印钱用的小票专用张,办公打印机用的是A4标准纸),在处理打印类的需求时,如果不用代码干预,用户必须每次打印时,都必须在 ...

  9. C# WinForm RDLC报表不预览直接连续打印

    用微软的RDLC报表直接打印不预览 直接上代码. //打印清单 System.Data.DataTable dt = print_QD(dr); ReportViewer rvDoc = new Re ...

  10. RDLC报表 在WinForm里运行出现 未能加载文件或程序集microsoft.reportviewer.winforms

    做一下记录顺便帮助一下遇到问题的朋友. 做RDLC报表在WinForm运行,在VS里面调试引用了“Microsoft.ReportViewer.Common.dll”和“Microsoft.Repor ...

随机推荐

  1. python闭包的使用

  2. 理解 Java 构造函数不可以继承

    参考来源:http://www.52bowen.com/a/2604620.html

  3. springmvc中的web.xml配置(包含中文乱码解决)

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...

  4. mysql 5.7 显示中文

    思路: 那网页xxx.php的工作过程就是这样的啦:从xxx.php页面上输入汉字,因为xxx.php是UTF8编码的,所以xxx.php以UTF8格式转换输入的汉字,然后以UTF8提交给mysql, ...

  5. H5活动的一些事

    ISUX团队镇楼:https://isux.tencent.com/nine-question-of-swipe-html5-page.html IE6.7.8支持html5新元素 : http:// ...

  6. WordPress腾讯云存储搭建教程,完美解决

    写在前面的话: 为什么会有今天的话题:WordPress+腾讯云存储? 因为博主不想使用七牛云,也不想使用又拍云,所以才有了今天的话题. 在使用腾讯云存储的过程中是很不顺利的,万幸的是现在终于完美融合 ...

  7. python自动化--mock、webservice及webdriver模拟手机浏览器

    一.mock实现 自定义一个类,用来模拟未完成部分的开发代码 class Say(): def say_hello(self): pass 自定义返回值 import unittest from un ...

  8. Xcode 动态库及Framework 安装路径设置

    使用Xcode开发动态库及Framework时,需要为其设置Install path.在设置Install path时,可能会使用到以下几个路径: 1)绝对路径:               绝对路径 ...

  9. DWG转PDF

    DWG转PDF DWG转换PDF有两种方法,一种是利用PDF打印机,一种是利用专业软件: 利用PDF打印机最直接,但是不能批量打印,下面讲一下利用专业软件如何进行批量转换,在这里以梦想CAD软件(Mx ...

  10. wpf 自定义Button按钮

    创建ButtonEx类 public class ButtonEx : Button { static ButtonEx() { DefaultStyleKeyProperty.OverrideMet ...