以上两篇文章已经很丰富了,但是照做一遍不行,检查了N遍还是不行,就是找不出问题原因,总是提示“尚未为数据源“DataSet1_DataTable1”提供数据源实例。”这主要是说在为ReportViewer控件选择数据源的时候,还没有选择数据源实例,如图所示

,因此要选择一个数据源,例如ObjectDataSource1,这个一般是在你选择的时候自动生成的,但即使选择了数据源也还是会出错,比如“处理报表时出错。未能找到在 ObjectDataSource“ObjectDataSource2”的 TypeName 属性中指定的类型”等类似的错误,因为还差一个关键的步骤,就是配置数据源,我们要先选择业务对象,就是选择预先准备好的DataSet用来当容器(因为我们要把真正从数据库中取出来的数据放进去),

然后是定义数据方法,这个地方我不知道具体的过程或逻辑应该是怎样的,但我觉得应该返回一个DataSet,于是我就选择了一个Coyp()方法,

于是就顺利实现了,总结起来就是:

1、在页面添加ReportViewer控件。

2、新建一个DataSet文件,设置的字段名要与欲动态绑定的从数据库提取出来的DataSet一样,这个主要是用来当做容器,因为报表文件需要用到数据集文件。

3、新建报表文件rdlc,选择你想要的报表样式,并将DataSet中的字段拖拽到报表中。

4、为ReportViewer选择报表,选择数据源,并配置数据源(具体方法如上所述)。

5、最后就剩下在cs文件中动态指定数据源了,常用代码如下:

ReportDataSource rds = new ReportDataSource("DataSet1_DataTable1", dt2);//将从数据库中提取出的DataTable填进DataSet文件中的DataSet1_DataTable1。

ReportViewer1.LocalReport.DataSources.Clear();

ReportViewer1.LocalReport.DataSources.Add(rds);

ReportViewer1.LocalReport.Refresh();

另外,如果我们需要在同一页面显示不同情况的报表,比如你如果用的是折线图,但取出不同的数据它的刻度就会不同,有的数比较大有的数较小,这样就会影响效果,这种情况就可以制作几个不同的报表,这就真正用到了动态绑定,甚至于还有更强的方法,不用准备更多的报表,每次都让它通过代码生成,例如:

ControlCollection coll = ReportViewer1.Parent.Controls;

int oldIndex = coll.IndexOf(ReportViewer1);

ReportViewer newViewer = new ReportViewer();

coll.AddAt(oldIndex, newViewer);

coll.Remove(ReportViewer1);

newViewer.ShowToolBar = false;

newViewer.Width = 795;

newViewer.Height = 527;

newViewer.LocalReport.DataSources.Clear();

newViewer.LocalReport.ReportPath = MapPath("Report1.rdlc");

newViewer.LocalReport.ReportEmbeddedResource = "Report1.rdlc";

newViewer.LocalReport.DataSources.Add(rds);

newViewer.LocalReport.Refresh();

这个方法的大概意思就是用ControlCollection新建一个ReportViewer的控件集合,再删除已有的ReportViewer1,添加一个新的newViewer,然后指定需要的数据集,个人觉得这个方法更好一些,关于新生成的newViewer的属性一样可以用代码设置。

注意事项:

1、ReportViewer控件的样式可以设置,例如我就想要一个报表,不想看见刷新按钮等,这个就可以ShowToolBar设置为False。

2、实现Refresh在很多时候是必须的,因为已经选择不显示刷新按钮了。但如果你的页面有updatepanel控件就要注意了,这个会影响你的刷新,最好是去掉updatepanel控件。

动态绑定ReportViewer控件之经验总结的更多相关文章

  1. 部署报表和 ReportViewer 控件 rdlc

    部署报表和 ReportViewer 控件 您可以将报表和 ReportViewer 控件作为应用程序的一部分自由发布.根据控件类型以及报表是配置为本地处理还是远程处理,部署要求会有很大不同.在同一个 ...

  2. C# - VS2019 WinFrm应用程序开发报表 - ReportViewer控件初涉

    前言 简单报表我们可以通过label.textBox和PrintDialog来实现,但是一般在实际生产过程中,用户的报表需求一般都是比较复杂的. 本篇主要记录对于传统中国式复杂报表的处理方法和解决思路 ...

  3. VS2017中使用ReportViewer控件,vs2017找不到Microsoft Rdlc Report Designer for Visual Studio

    VS2017中没有ReportViewer控件,这个控件用来实现在项目中显示和打印关系数据库中的表比较容易,特别是想要打印的时候,这个比用DataGridView和PrintDocument要简单一些 ...

  4. 基于Jquery WeUI的微信开发H5页面控件的经验总结(2)

    在微信开发H5页面的时候,往往借助于WeUI或者Jquery WeUI等基础上进行界面效果的开发,由于本人喜欢在Asp.net的Web界面上使用JQuery,因此比较倾向于使用 jQuery WeUI ...

  5. C#VS2017添加ReportViewer控件

    安装完vs2017之后我们进行添加Report Viewer控件: 1. 点击Tools -> Extensions and Updates... 2. 在新窗口搜索栏中输入rdlc后搜索,结果 ...

  6. Microsoft ReportViewer 控件类型版本兼容问题及解决方法

    错误 Parser Error Message: The base class includes the field 'rvEquipment', but its type (Microsoft.Re ...

  7. 基于Jquery WeUI的微信开发H5页面控件的经验总结(1)

    在微信开发H5页面的时候,往往借助于WeUI或者Jquery WeUI等基础上进行界面效果的开发,由于本人喜欢在Asp.net的Web界面上使用JQuery,因此比较倾向于使用 jQuery WeUI ...

  8. 转:ReportViewer控件使用方法

    a. ReportViewer关联Report1.rdlc的简单呈现b. 对带有报表参数的Report1.rdlc的呈现c. 利用程式生成的DataSet 填充报表d. 调用存储过程 生成DataSe ...

  9. 找不到reportviewer控件在哪儿

    請自行加入ReportViewer(9.0)到工具箱之中. 如下圖,

随机推荐

  1. heritrix 3.2.0 -- 环境搭建

    heritrix作为一个比较经典的开源爬虫,写这篇文章目的是因为,3.X之后的heritrix的介绍以及配置的文章比较少了. heritrix 3.x 以后使用maven 2配置jar包引用,但是总是 ...

  2. iostat 离线安装

    由于lucene需要一定的io读写顾安装iostat来对磁盘io进行监控 iostat 属于sysstat下的功能 git路径如下:https://github.com/sysstat/sysstat ...

  3. dp优化

    入口 A(fzu 1894) 普通的单调队列,trick是进队判断的符号选取(>=wa , >ac). B(poj 2823) 没什么好说的 ,坑爹poj g++,tle ;c++,ac. ...

  4. Python Cookie HTTP获取cookie并处理

    Cookie模块同样是Python标准库中的一员,它定义了一些类来解析和创建HTTP 的 cookie头部信息. 一.创建和设置Cookie >>> import Cookie #导 ...

  5. pyqt信号事件相关网址说明及python相关

    pyqt在线文档: http://www.rzcucc.com/search/pyqt.sourceforge.net/Docs/PyQt4/-qdatetime-2.html PyQT信号槽_学习笔 ...

  6. thinkphp框架的路径问题 - 总结

    thinkphp框架的路径问题 - 总结 (2011-06-21 11:01:28) 转载▼ 标签: thinkphp 框架 路径 杂谈 分类: Php TP中有不少路径的便捷使用方法,比如模板中使用 ...

  7. IoC容器Autofac正篇之解析获取(五)

    解析获取的方式有如下几种: Resolve class Program { static void Main(string[] args) { var builder = new ContainerB ...

  8. Chrome开发者工具详解 (5):Application、Security、Audits面板

    Application面板简介 该面板主要是记录网站加载的所有资源信息,包括存储数据(Local Storage.Session Storage.IndexedDB.Web SQL.Cookies). ...

  9. VML :Vector Markup Language

    在以前老是浏览器IE<9在不支持SVG情况下,IE一般通过VML来绘制图形,图片,文字等 步骤: 必须在头部添加 <HTML xmlns:v="urn:schemas-micro ...

  10. asp.net缓存(一)

    ASP.NET页面输出缓存(OutputCache) 页面输出缓存是最为简单的缓存机制,该机制将整个ASP.NET页面内容保存在服务器内存中.当用户请求该页面时,系统从内存中输出相关数据,直到缓存数据 ...