在代码中向ReportViewer动态添加数据源
对于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动态添加数据源相关推荐
- Layui框架下:JS中根据后台查询到的数据动态往div中ul里面动态添加li
Layui框架下:JS中根据后台查询到的数据动态往div中ul里面动态添加li 先建立好一个div和ul JS代码: $(function () { layui.admin.req({ url: _s ...
- Hadoop学习笔记—13.分布式集群中节点的动态添加与下架
Hadoop学习笔记-13.分布式集群中节点的动态添加与下架 开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如 ...
- 安卓java代码标签_Android实现动态添加标签及其点击事件
在做Android开发的时候,会遇到动态添加标签让用户选择的功能,所以自己写了个例子,运行效果图如下. 标签可以左右滑动进行选择,点击的时候,会弹出toast提示选择或者取消选择了哪个标签.通过动态添 ...
- java定时执行sql语句_spring中使用quartz动态添加定时任务执行sql
系统用来每天插入视图数据... 一.数据库表设计 1.接口配置表(t_m_db_interface_config) 2.接口日志表(t_m_db_interface_log) 3.前端配置页面 查询页 ...
- 代码中(C#)支持动态拼接SQL的参数化查询
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.D ...
- mac php phpize,macOS 中使用 phpize 动态添加 PHP 扩展的错误解决方法
使用 phpize 动态添加 PHP 扩展是开发中经常需要做的事情,但是在 macOS 中,首次使用该功能必然会碰到一些错误,本文列出了这些错误的解决方法. 问题一: 执行 phpize 报错如下: ...
- pytest中pytest_addoption用法 动态添加命令行参数 (钩子函数)
考虑场景: 我们的自动化用例需要支持在不同测试环境运行,有时候在dev环境运行,有时候在test环境运行: 有时候需要根据某个参数不同的参数值,执行不同的业务逻辑: 上面的场景我们都可以通过" ...
- ajax必填项验证,jQuery验证 - 通过MVC2中的ajax动态添加必填字段
我正在尝试在MVC2中的表单上使用jQuery验证.我正在使用期货项目中的MicrosoftMvcJQueryValidation.js. 首次加载表单时,它是代表ViewViewModel,并且有三 ...
- layui中layer.photo动态添加的图片,每次弹出上一张添加的图
layui版本:2.5以上 修改layer.js源码,注意h(); 调用位置 修改前: if (n || p.on("click", t.img, function() {var ...
最新文章
- 使用myeclipse的第一步
- 漫谈中国自主杀毒引擎
- tomcat ajp协议安全限制绕过漏洞_国家信息安全漏洞共享平台发布Apache Tomcat漏洞安全公告...
- 如何使用WCF调试器WcfTestClient.exe
- vmos切换安卓版本_安卓之中还能运行安卓!神奇的安卓虚拟机App
- 当.NET遇到机器学习
- Linux下安装jdk8步骤详述
- Python迭代文件对象
- 5.Scalal语法03 - 函数
- dedecms手机站和PC站共用同一数据库的方法
- 看拉扎维《模拟CMOS集成电路设计》的一些总结和思考(六)——放大器的频率特性
- 电脑远程链接怎么删除计算机,删除远程桌面连接记录的方法
- 东芝机械手tspc安装_日本东芝工四轴机械手THL800
- 1.7 爬取汽车之家实战
- linux如何扫描文件格式,Linux系统如何使用扫描仪
- 凯文·凯利:AI将改变一切设计工作
- PHP剧影评系统的设计与实现毕业设计源码140859
- JavaScript中if嵌套
- vim复制、粘贴以及配置总结
- 异常解决:java.lang.IllegalStateException: Failed to introspect Class