在代码中向ReportViewer动态添加数据源

2024-06-10 08:31:12

对于ReportViewer控件的使用,网上很多文章介绍都是直接使用ReportViewer控件右上方的三角按钮来绑定数据源和表,感觉不是很方便,那能不能动态来进行绑定呢,我做了个实验,暂时没发现什么问题。记录如下:

首先,仍然是使用VS中添加项的方式添加了两个DataSet,分别命名为DataSet1和DataSet2,它们都有一个DataTable,分别是DataTable1和DataTable2。每个DataTable上都添加了一个TableAdaptor,分别是DataTable1TableAdaptor1和DataTable2TableAdaptor2。

其次,仍然使用VS中添加项的方式针对两个数据源都添加了一个报表,分别为Report1.rdlc和Report2.rdlc,对这两个表分别进行界面设计。

在主窗体,添加一个Button1,目的是点击Button1后加载报表内容,并添加一个ReportViewer对象,其名称为reportViewer1。

动态生成的对象需包括:BindingSource, DataSet和TableAdapter,另外,在设置这些对象的名字域时要注意按注释里的说明进行书写,否则加载报表显示时可能出现“尚未为数据源XXX提供数据源实例”的错误提示。

以下例子的目的是点击Button1后加载DataSet1中DataTable1的相关数据,报表

private void button1_Click(object sender, EventArgs e)
        {

BindingSource tBindingSource = new BindingSource();
            WindowsApplication3.DataTable1TableAdaptor1.sqlInfoTableAdapter ds1TableAdapter=new WindowsApplication3.DataTable1TableAdaptor1.sqlInfoTableAdapter (); /*直接new一个DataTable1中已经创建好的Adapter*/
            WindowsApplication3.DataSet1 tDataSet = new WindowsApplication3.DataSet1();
            tDataSet.DataSetName = "tDataSet"; /*必须是本DataSet变量的名字*/
            tDataSet.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
            tBindingSource.DataMember = "DataTable1";/*必须是所绑定的数据源DataTable的名字*/
            tBindingSource.DataSource = tDataSet;
            tBindingSource.Position = 0;
            ds1TableAdapter.ClearBeforeFill = true;
            ReportDataSource rds = new ReportDataSource();
            rds.Name = "DataSet1_DataTable1";/*必须是数据源DataSet名_数据源DataTable名*/
            rds.Value = tBindingSource;
            this.reportViewer1.Reset();
            this.reportViewer1.LocalReport.DataSources.Clear();
            this.reportViewer1.LocalReport.DataSources.Add(rds);
            this.reportViewer1.LocalReport.ReportEmbeddedResource = "WindowsApplication3.Report1.rdlc";/*必须是相应报表rdlc文件在工程中的全路径名*/
            ReportParameter rp = new ReportParameter("begin_time", this.dateTimePicker1.Value.ToString());
            this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp });
            ds1TableAdapter.Fill(tDataSet.viewG4OvenInfo, dateTimePicker1.Value);
            this.reportViewer1.RefreshReport();

}

同理,在button2中可增加对DataSet2的数据源的绑定。

通过点击不同的按钮,ReportViewer控件中能够显示不同的表内容

转载于:https://blog.51cto.com/1117865/642686

在代码中向ReportViewer动态添加数据源相关推荐

  1. Layui框架下:JS中根据后台查询到的数据动态往div中ul里面动态添加li

    Layui框架下:JS中根据后台查询到的数据动态往div中ul里面动态添加li 先建立好一个div和ul JS代码: $(function () { layui.admin.req({ url: _s ...

  2. Hadoop学习笔记—13.分布式集群中节点的动态添加与下架

    Hadoop学习笔记-13.分布式集群中节点的动态添加与下架 开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如 ...

  3. 安卓java代码标签_Android实现动态添加标签及其点击事件

    在做Android开发的时候,会遇到动态添加标签让用户选择的功能,所以自己写了个例子,运行效果图如下. 标签可以左右滑动进行选择,点击的时候,会弹出toast提示选择或者取消选择了哪个标签.通过动态添 ...

  4. java定时执行sql语句_spring中使用quartz动态添加定时任务执行sql

    系统用来每天插入视图数据... 一.数据库表设计 1.接口配置表(t_m_db_interface_config) 2.接口日志表(t_m_db_interface_log) 3.前端配置页面 查询页 ...

  5. 代码中(C#)支持动态拼接SQL的参数化查询

    using System; using System.Collections.Generic; using System.Text; using System.Data; using System.D ...

  6. mac php phpize,macOS 中使用 phpize 动态添加 PHP 扩展的错误解决方法

    使用 phpize 动态添加 PHP 扩展是开发中经常需要做的事情,但是在 macOS 中,首次使用该功能必然会碰到一些错误,本文列出了这些错误的解决方法. 问题一: 执行 phpize 报错如下: ...

  7. pytest中pytest_addoption用法 动态添加命令行参数 (钩子函数)

    考虑场景: 我们的自动化用例需要支持在不同测试环境运行,有时候在dev环境运行,有时候在test环境运行: 有时候需要根据某个参数不同的参数值,执行不同的业务逻辑: 上面的场景我们都可以通过" ...

  8. ajax必填项验证,jQuery验证 - 通过MVC2中的ajax动态添加必填字段

    我正在尝试在MVC2中的表单上使用jQuery验证.我正在使用期货项目中的MicrosoftMvcJQueryValidation.js. 首次加载表单时,它是代表ViewViewModel,并且有三 ...

  9. layui中layer.photo动态添加的图片,每次弹出上一张添加的图

    layui版本:2.5以上 修改layer.js源码,注意h(); 调用位置 修改前: if (n || p.on("click", t.img, function() {var ...

最新文章

  1. 使用myeclipse的第一步
  2. 漫谈中国自主杀毒引擎
  3. tomcat ajp协议安全限制绕过漏洞_国家信息安全漏洞共享平台发布Apache Tomcat漏洞安全公告...
  4. 如何使用WCF调试器WcfTestClient.exe
  5. vmos切换安卓版本_安卓之中还能运行安卓!神奇的安卓虚拟机App
  6. 当.NET遇到机器学习
  7. Linux下安装jdk8步骤详述
  8. Python迭代文件对象
  9. 5.Scalal语法03 - 函数
  10. dedecms手机站和PC站共用同一数据库的方法
  11. 看拉扎维《模拟CMOS集成电路设计》的一些总结和思考(六)——放大器的频率特性
  12. 电脑远程链接怎么删除计算机,删除远程桌面连接记录的方法
  13. 东芝机械手tspc安装_日本东芝工四轴机械手THL800
  14. 1.7 爬取汽车之家实战
  15. linux如何扫描文件格式,Linux系统如何使用扫描仪
  16. 凯文·凯利:AI将改变一切设计工作
  17. PHP剧影评系统的设计与实现毕业设计源码140859
  18. JavaScript中if嵌套
  19. vim复制、粘贴以及配置总结
  20. 异常解决:java.lang.IllegalStateException: Failed to introspect Class

热门文章

  1. 框架开发中的junit单元测试
  2. JBoss、Tomcat Classloader不完全分析
  3. [译]WCF RIA Services中的集合(2)
  4. ubuntu9.10回收站目录
  5. Samba共享后不能访问,或者看不到文件,是selinux惹的祸
  6. suse11.3下samba服务的配置
  7. Github新建分支以处理原仓库提交时detached HEAD的问题
  8. Facebook开源工具包LASER,支持93种语言
  9. 9月7日学习内容整理:内置函数
  10. SQL基础--完整性约束