在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. Cannot create an instance of OLE DB provider “OraOLEDB.Oracle” for linked server "xxxxxxx".

    在SQL SERVER 2008 R2下用Windows 身份认证的登录名创建了一个访问ORACLE数据库的链接服务器xxxxx,测试成功,木有问题,但是其它登录名使用该链接服务器时,报如下错误: 消 ...

  2. Struts2如何搭建?

    如何搭建Struts2:   1.导入jar包 commons-fileupload-1.3.jar commons-io-2.0.1.jar commons-lang3-3.1.jar freema ...

  3. 浅谈python lambda

    lambda x: x * x,实际上就是 def f(x): retrun x * x 关键字lambda表示匿名函数,冒号前的x表示函数参数. 匿名函数只能有一个表达式,不用写return,返回值 ...

  4. Eclipse导入项目文件夹

    Eclipse项目导入出现感叹号解决方法 出现这样的情况怎么办 右击项目名-Bulid path -configure Bulid path 选择Libraries-Remove(移去错的)-Add ...

  5. linux服务器配置pyspark解决py4j报错等问题

    1.下载spark,python包 略 2.环境变量配置 打开 ~/.bashrc配置文件 如图添加下列环境变量及path 3.退出配置文件,输入 source ~/.bashrc 来执行你添加的一些 ...

  6. 小白的.Net Core 2.0 ConsoleApp入门(keng)指南(一)

    一.准备工作 准备工作很简单,甚至可以不用Visual Studio,一只.NET CORE和Runtime即可(你有考虑过世界第一IDE的感受吗) 下载:https://www.microsoft. ...

  7. Chocolatey 和 Redis windows安装记录

    前言 最近研究redis,发现Redis没有官方的windows版本,但MsOpenTech有一直维护对应的Redis版本,其下载地址如下: https://github.com/MSOpenTech ...

  8. yum安装centos系统依赖库

    安装centos系统依赖库,安装软件过程中,经常需要的一些库,可以在编译安装软件前执行如下命令: 首先更新系统(这步可以不执行) yum -y update 这种更新是全部更新,但是有时一些软件不想更 ...

  9. POJ2396 Budget [有源汇上下界可行流]

    POJ2396 Budget 题意:n*m的非负整数矩阵,给出每行每列的和,以及一些约束关系x,y,>=<,val,表示格子(x,y)的值与val的关系,0代表整行/列都有这个关系,求判断 ...

  10. POJ3155 Hard Life [最大密度子图]

      题意:最大密度子图 #include<iostream> #include<cstdio> #include<cstring> #include<algo ...