以上两篇文章已经很丰富了,但是照做一遍不行,检查了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. grep详解

    一.简介 Global Regular Expression Print,是一种强大的文本搜索工具,能使用正则表达式. 二.语法 grep [OPTIONS] PATTERN [FILE...]gre ...

  2. Android应用开发学习之状态栏通知

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 状态栏通知涉及到两个类,一是Notification,它代表一个通知:另一个是NotificationManager ...

  3. 第02讲- Android开发环境

    第02讲Android开发环境 需要下载的软件: JDK(JavaDevelopment Kit) Eclipse AndroidSDK(SoftwareDevelopmentKit) ADT(And ...

  4. LR选择哪种方式录制

    LR选择哪种方式录制,有以下考虑原则: 1.基于浏览器的应用程序推荐使用HTML-basic script方式录制 2.不是基于浏览器的应用程序推荐使用URL-basic script方式录制 3.如 ...

  5. Android 打造自己的个性化应用(三):应用程序的插件化

    在android的项目开发中,都会遇到后期功能拓展增强与主程序代码变更的现实矛盾,也就是程序的灵活度. 由于linux平台的安全机制,再加上dalvik的特殊机制,各种权限壁垒,使得开发一个灵活多变的 ...

  6. 引用System.Runtime.Serialization.Json

    vs2012下,重新添加一次System.Runtime.Serialization的引用

  7. LANMP 一键下载

    下载安装 wget http://dl.wdlinux.cn:5180/lanmp_v2.5.tar.gz tar zxvf lanmp_v2.5.tar.gz sh install.sh 4个可选安 ...

  8. css中使用rgba和opacity设置透明度的区别

    1.使用rgba设置背景色的透明 效果如下: <body> <div id="box"> 你好啊! </div> </body> b ...

  9. PHP学习笔记三十三【自定义错误处理器】

    <?php //自定义错误处理器 //$errorno 错误号 //$errmes错误信息 //这两个参数是必须的 function my_error($errorno,$errmes) { e ...

  10. TransactionScrope 2

    继上一篇文章TransactionScrope 在做相应的变动时,发现可以重现ORA-14450错误,如: List<Thread> ls = new List<Thread> ...