以上两篇文章已经很丰富了,但是照做一遍不行,检查了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. Android和FTP服务器交互,上传下载文件(实例demo)

    今天同学说他备份了联系人的数据放在一个文件里,想把它存到服务器上,以便之后可以进行下载恢复..于是帮他写了个上传,下载文件的demo 主要是 跟FTP服务器打交道-因为这个东东有免费的可以身亲哈 1. ...

  2. java设计模式--结构型模式--享元模式

    享元模式 概述 运用共享技术有效地支持大量细粒度的对象. 适用性 当都具备下列情况时,使用Flyweight模式: 1.一个应用程序使用了大量的对象. 2.完全由于使用大量的对象,造成很大的存储开销. ...

  3. perl 对象 通过bless实现

    对象只是一种特殊的引用,它知道自己是和哪个类关联在一起的,而构造器知道如何创建那种关联关系. 这些构造器是通过使用bless操作符,将一个普通的引用物转换成一个对象实现的,

  4. STS(Spring Tool Suite)使用前准备

    sts 的基础框架拿的eclipse的,你可以理解为eclipse + spring插件的高级升华版.在使用上可以很大限度的参考eclipse的操作. 首先,调整字体. 中文很麻烦的,因为编码问题.习 ...

  5. 在Struts2中使用Uploadify组件上传文件

    Uploadify是一个基于Jquery的文件上传组件,官网http://www.uploadify.com/可以在官网获得该组件,运行演示示例,下载帮助文档.     作为Web前端的增强技术,Jq ...

  6. POJ3260:The Fewest Coins(混合背包)

    Description Farmer John has gone to town to buy some farm supplies. Being a very efficient man, he a ...

  7. UVA 536 (13.08.17)

     Tree Recovery  Little Valentine liked playing with binary trees very much. Her favoritegame was con ...

  8. 笔记--cocos2d-x 3.0 环境搭建

    一.下载资源工具 1.下载cocos2d-x 3.0  官网地址:http://www.cocos2d-x.org/filedown/cocos2d-x-3.0-cn 2.下载VS2012 地址网上搜 ...

  9. [Immutable.js] Converting Immutable.js Structures to Javascript and other Immutable Types

    Immutable.js provides several conversion methods to migrate one structure to another. Each Immutable ...

  10. vs2013中国集

    在TOOLS的菜单条下的最后一项.进去后在输入框输入Language.按Enter.选择语言,然后确定就可以. 如图 假设没有点击下拉框底下的链接 就会调挑转到语言包下载界面 下载须要的语言就可以, ...