在vs里新建一个winform程序"ReportViewTest",在form1中添加一个reportView控件,from1的load事件如下:

 private void Form1_Load(object sender, EventArgs e)
{ DataSet ds = new DataSet();
try
{
ds = getDS();
}
catch (Exception)
{ throw;
}
Microsoft.Reporting.WinForms.ReportDataSource r = new Microsoft.Reporting.WinForms.ReportDataSource();
r.Name = "Dev_LandaHRM";
r.Value = ds.Tables[];
this.reportViewer1.LocalReport.DataSources.Add(r);
this.reportViewer1.RefreshReport();
}

得到报表数据源代码如下:

 DataSet getDS()
{
string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionSQL"].ToString();
SqlConnection conn = new SqlConnection(connStr);
//读取sql
XmlDocument xmldoc = new XmlDocument();
string fileName = System.Configuration.ConfigurationManager.AppSettings["file2"].ToString();
xmldoc.Load(@"../../" + fileName);
this.reportViewer1.LocalReport.ReportPath = @"../../" + fileName;
XmlNodeList sqlM = xmldoc.GetElementsByTagName("CommandText");
string sql = sqlM[].InnerXml.ToString();
XmlNodeList canshu = xmldoc.GetElementsByTagName("QueryParameter");
//获取数据源
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
List<string> list = new List<string>();
list.Add("");
list.Add("建筑系");
//如果有参数 传参数
if (canshu.Count > )
{
XmlNodeList canshuList = xmldoc.GetElementsByTagName("Prompt");
if (canshuList.Count > )
{
for (int i = ; i < canshuList.Count; i++)
{
//XmlNodeList typeList = xmldoc.GetElementsByTagName("DataType");
//if (typeList[i].InnerXml.ToString().Equals("DateTime"))
//{
// DateTime datetime = DateTime.Parse(list[i]);
// da.SelectCommand.Parameters.Add("@" + canshuList[i].InnerXml, datetime);
// ReportParameter rp = new ReportParameter(canshuList[i].InnerXml.ToString(), datetime.ToString());
// this.reportViewer1.LocalReport.SetParameters(rp);
//}
//else
//{
da.SelectCommand.Parameters.Add("@" + canshuList[i].InnerXml, list[i]); //参数传给数据源
ReportParameter rp = new ReportParameter(canshuList[i].InnerXml.ToString(), list[i]);
this.reportViewer1.LocalReport.SetParameters(rp); //参数传给报表
//}
}
} }
DataSet de = new DataSet();
da.Fill(de, "Table");
conn.Close();
return de;
}

注释部分为动态传参数使用,为了测试方便,不动态长参数。

其中得到数据库连接字符串和报表名字可配置在app.config中,代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="ConnectionSQL"
connectionString="Data Source=192.168.0.111\SQL2005;Initial Catalog=Dev_LandaHRM;Persist Security Info=True;User ID=sa;Password=landa"
providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="file1" value="CSEMPL1.rdl"/>
<add key="file2" value="CSEMPL2.rdl"/>
<add key="file3" value="Dept.rdl"/>
<add key="file4" value="SubDept.rdlc"/>
</appSettings>
</configuration>

ReportView动态加载带参数的RDCL文件的更多相关文章

  1. ReportView动态加载带参数的RDCL文件及子报表

    本文来自Torres.Wu发表在博客园的博客,转载请标明出处. 同上一篇差不多,这次咱们加载带有子报表的RDCl文件.首先还是创建一个form程序,在form2窗体中添加一个ReporView控件,l ...

  2. 为不同分辨率单独做样式文件,在页面头部用js判断分辨率后动态加载定义好的样式文件

    为不同分辨率单独做样式文件,在页面头部用js判断分辨率后动态加载定义好的样式文件.样式文件命名格式如:forms[_屏幕宽度].css,样式文件中只需重新定义文本框和下拉框的宽度即可. 在包含的头文件 ...

  3. js实用方法记录-js动态加载css、js脚本文件

    js实用方法记录-动态加载css/js 附送一个加载iframe,h5打开app代码 1. 动态加载js文件到head标签并执行回调 方法调用:dynamicLoadJs('http://www.yi ...

  4. JavaScript 之 动态加载JS代码或JS文件

    2.动态加载JS文件 <script type="text/javascript"> function loadScript(url, callback) { var ...

  5. 使用js加载器动态加载外部js、css文件

    let MiniSite = new Object(); /** * 判断浏览器 */ MiniSite.Browser = { ie: /msie/.test(window.navigator.us ...

  6. 动态加载JS(css)文件

    <script language="javascript">document.write("<script src='test.js'><\ ...

  7. CxImage动态加载图片(判断图片文件类型)

    1.打开一张图可以通过创建一个新的CxImage对象来完成,通过构造函数来打开一张图CxImage::CxImage(const char * filename, DWORD imagetype)其中 ...

  8. 动态加载、移除css文件

    修改样式有通过修改class属性来更改,也可以通过动态引入外部的css文件来改变对应的样式展示. 这里就介绍动态引入.移除css文件 ///添加平板样式文件 function loadStyles() ...

  9. C#,动态加载DLL,通过反射,调用参数,方法,窗体

    .net中常会用到动态加载DLL,而DLL中可能包含各种参数.方法.窗体,如何来调用动态加载这些参数.方法.窗体呢? 在C#中,我们要使用反射,首先要搞清楚以下命名空间中几个类的关系: System. ...

随机推荐

  1. 开发步骤Dubbo、spring mvc、springboot、SSM整合开发步骤

    一.Dubbo开发步骤: 链接:https://pan.baidu.com/s/1pMPO1kf 密码:9zaa 第一: 1.创建consumer工程2.在pom.xml文件下添加配置3.添加appl ...

  2. 【转】 linux下的awk程序执行

    #!/bin/awk -f awk脚本开头使用这个命令,赋予这个文本文件以执行的权限.这样做之后,你就可以在命令行中用类似于下面这样的方式调用并执行这段awk程序了. BEGIN和END的大括号必须紧 ...

  3. 2018-02-02-解决IDE中无法忽略的非代码文件

    layout: post title: 2018-02-02-解决IDE中无法忽略的非代码文件 key: 20180202 tags: GIT 版本管理 modify_date: 2018-02-02 ...

  4. DOM中对象的获得

    DOM的所有对象会在页面打开时,由浏览器页面创建. 浏览器把dom定点对象Document对像的引用交给了window对象. 1.document对象的获得    var doc = window.d ...

  5. 老凡原创PHPcms发布上架chinaz

    FanCms内容管理系统(3网兼容) FanCms内容管理系统(3网兼容)核心使用CodeIgniter框架.使用SQlite数据库,不需要安装,上传到任意支持PHP的空间,就能使用.高级URL自定义 ...

  6. 布隆过滤器(BloomFilter)持久化

    摘要 Bloomfilter运行在一台机器的内存上,不方便持久化(机器down掉就什么都没啦),也不方便分布式程序的统一去重.我们可以将数据进行持久化,这样就克服了down机的问题,常见的持久化方法包 ...

  7. 终于放弃Windows下丑陋的cmd

    微软万年不变的cmd命令行工具,简直其丑无比,交互性极差.但是作为开发者有时离不开.最近用了几款开源替代方案.发现几款不错的cmd替代者.例如Cmder.babun.ConsoleZ.win-bash ...

  8. elasticsearch的percolator操作

    es的普通查询是通过某些条件来查询满足的文档,percolator则不同,先是注册一些条件,然后查询一条文档是否满足其中的某些条件. es的percolator特性在数据分类.数据路由.事件监控和预警 ...

  9. [转载]完全版线段树 by notonlysuccess大牛

    原文出处:http://www.notonlysuccess.com/ (好像现在这个博客已经挂掉了,在网上找到的全部都是转载) 今天在清北学堂听课,听到了一些很令人吃惊的消息.至于这消息具体是啥,等 ...

  10. BZOJ 3456: 城市规划 [多项式求逆元 DP]

    题意: 求出n个点的简单(无重边无自环)无向连通图数目.方案数mod 1004535809(479 * 2 ^ 21 + 1)即可. n<=130000 DP求方案 g(n) n个点所有图的方案 ...