a. ReportViewer关联Report1.rdlc的简单呈现
b. 对带有报表参数的Report1.rdlc的呈现
c. 利用程式生成的DataSet 填充报表
d. 调用存储过程 生成DataSet 填充报表
==========
简单的呈现 
==========
1. 打开VS2005,文件->新建->网站 选择语言种类(C#)
2. 在该解决方案下 设计其已经生成的Default.aspx
3. 将工具箱-数据下的ReportViewer 拉入Default.aspx的设计界面
4. 在用鼠标选中ReportViewer1时 可以看到其右上角的 小三角 图标
5. 用鼠标点击该小三角 将展开 ReportViewer任务 快捷菜单
6. 由于本项目 目前还没有做好的报表 所以 选择 设计新报表
7. 点击 设计新报表 后 将呈现报表Report1.rdlc的设计界面
8. 由于本项目 目前还没有做好的网站数据源 
   所以 此时要添加新数据源
  (如果没有呈现“网站数据源”界面,可以点击报表设计界面,
   此时上方菜单中多出现“数据”,“报表”等选项
   可以在“数据”菜单下,选择“显示数据源”)
9. 点击“添加新数据源” 会出现“TableAdapter 配置向导”
10. 选择数据连接(如连接到本机的Northwind数据库),下一步
11. 选择是否要将连接字符串保存到应用程序配置文件中,下一步
12. 选择命令类型,此时 可以 点击 取消 按钮,退出向导
13. 全部保存
14. 选择 视图 菜单 下 “服务器资源管理器”,
    可以看到刚才所建立的数据连接,
    可以看到Northwind数据库下的表,视图,存储过程,函数
15. 在解决方案的树下 找到并打开App_Code文件夹下的DataSet1.xsd数据集
16. 可以看到 打开的数据集设计器 是空的,此时可以将“服务器资源管理器”
    下的Northwind的表或存储过程等 拉入 数据集设计器
    (如此时 拉入了Orders表 和 Sales by Year这个存储过程)
17. 全部保存 
18. 双击Report1.rdlc,打开报表设计界面
    将此时的报表设计工具箱中的 报表项 的  表 拉入 报表设计界面
19. 选择 “数据”菜单下的“显示数据源”,
    可以在网站数据源下 看到 DataSet1 下的 两个 表 Orders 和 Sales by Year
20. 此时选择Orders下的任意字段 (如OrderID 和 CustomerID)
    拉到Report1.rdlc设计界面的表的“详细资料”处 用于报表显示
21. 全部保存
22. 回到Default.aspx的设计界面,为ReportViewer1 绑定报表
    选择ReportViewer1显示刚才设计好的Report1.rdlc
23. 全部保存,按F5或Ctrl+F5 运行,以查看初步效果

======================================
接下来要为Report1.rdlc添加一个报表参数 
======================================

24. 回到报表Report1.rdlc的设计界面
    点击 报表 菜单 下的“报表参数”
25. 在报表参数在设置框中 添加一个报表参数 进行相关设置 并 确定以保存
   (如其参数名称为rptParaA,类型为String)
26. 拉入一个文本框的报表项到Report1.rdlc的设计界面 以做为该报表的标题显示
27. 选中并右键单击该文本框,在弹出的菜单中选择“表达式”,
    进入“编辑表达式”的对话框
28. 在“编辑表达式”的对话框中,选择 参数,
    并双击刚才设置的rptParaA,使文本框的值=Parameters!rptParaA.Value
29. 保存对Report1.rdlc的修改
30. 因为新的Report1.rdlc报表的文本框需要有报表参数值的传入
    所以要在ReportViewer1 对Report1.rdlc的呈现时
    对Default.aspx.cs的编辑
31. 在Default.aspx.cs加入引用
    using Microsoft.Reporting.WebForms;    
    在Page_Load中加入如下代码

ReportParameter rptParaA = new ReportParameter("rptParaA", "测试报表参数");
        ReportViewer1.LocalReport.SetParameters(new ReportParameter[] { rptParaA });

32.保存并运行 以查看效果

=========================================
接下来,需要对所要呈现的报表资料 进行定制
也就是通过设计DataSet 
用符合需要的数据对报表进行资料绑定和呈现
=========================================

33.设置ReportViewer1的Visible为false
34.在Default.aspx的设计界面 加入一个按钮Button1
   将通过此按钮的Click事件 实现对数据库的访问 以及DataSet的数据填充
   和对ReportViewer1的资料绑定
35. Default.aspx.cs加入引用
    using System.Data.SqlClient;
    using Microsoft.Reporting.WebForms;

Button1_Click中的代码示例如下

SqlConnection myConn = new SqlConnection("Data Source=192.168.0.36;Initial Catalog=Northwind;User ID=sa;Password=sa");
        SqlDataAdapter myda = new SqlDataAdapter("select top 5 * from orders", myConn);
        DataSet myds = new DataSet();
        myConn.Open();
        myda.Fill(myds);
        myConn.Close();

ReportViewer1.Visible = true;

ReportParameter rptParaA = new ReportParameter("rptParaA", "测试报表参数");
        ReportViewer1.LocalReport.SetParameters(new ReportParameter[] { rptParaA });
  
        ReportDataSource rds = new ReportDataSource("DataSet1_Orders", myds.Tables[0]);
        ReportViewer1.LocalReport.DataSources.Clear();
        ReportViewer1.LocalReport.DataSources.Add(rds);
        ReportViewer1.LocalReport.Refresh();

注意ReportDataSource rds = new ReportDataSource("DataSet1_Orders", myds.Tables[0]);
       的"DataSet1_Orders"是与前台html程序的

中的的Name="DataSet1_Orders"是一致的

可以通过对DataSet的填充时的sql语句等的定制 来得到所需要的数据 以便报表呈现
    需要注意的是由于ReportViewer1此时的关联报表为Report1.rdlc,所以DataSet的Tables[0]中的结构
    一定要包含Report1.rdlc所呈现的字段,所以,这里的Sql语句为select top 5 * from orders
36.保存 运行 点击Button1 以便 报表呈现

===============================================
如果 报表所要呈现的数据 来源于存储过程
那么 在装载DataSet时 使其数据来源于存储过程即可
===============================================

37.右击项目 添加新项 ,选择 报表,向项目中加入Report2.rdlc,
   设置其呈现的数据来源为存储过程 Sales by Year
   同样的在Report2.rdlc的设计界面 加入“表”报表项
   并将网站数据源下的DataSet1下的Sales by Year表中的字段
   拉入报表项“表”在详细数据中 进行显示
38.如同Default.aspx 向项目中添加新的页面Default2.aspx
   向Default2.aspx加入一个Button 和 ReportViewer1
   并设置ReportViewer1所要呈现的报表为Report2.rdlc
   设置ReportViewer1的Visible为false
   双击Button 进行其Click事件的编写
   设置Default2.aspx为项目的起始页
39.在Default2.aspx.cs加入引用
   using System.Data.SqlClient;
   using Microsoft.Reporting.WebForms;
40.Button1_Click的事件代码示例如下

protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection myConn = new SqlConnection("Data Source=192.168.0.36;Initial Catalog=Northwind;User ID=sa;Password=sa");
        SqlDataAdapter myda = new SqlDataAdapter("Sales by Year", myConn);
        myda.SelectCommand.Parameters.AddWithValue("@Beginning_Date", "1997-10-10");
        myda.SelectCommand.Parameters.AddWithValue("@Ending_Date", "2000-10-10");
        myda.SelectCommand.CommandType = CommandType.StoredProcedure;
        DataSet myds = new DataSet();
        myConn.Open();
        myda.Fill(myds);
        myConn.Close();

ReportViewer1.Visible = true;
        
        ReportDataSource rds = new ReportDataSource("DataSet1_Sales_by_Year", myds.Tables[0]);
        ReportViewer1.LocalReport.DataSources.Clear();
        ReportViewer1.LocalReport.DataSources.Add(rds);

ReportViewer1.LocalReport.Refresh();
    }

41.保存 运行 点击按钮 报表效果查看

转:ReportViewer控件使用方法的更多相关文章

  1. 动态绑定ReportViewer控件之经验总结

    以上两篇文章已经很丰富了,但是照做一遍不行,检查了N遍还是不行,就是找不出问题原因,总是提示“尚未为数据源“DataSet1_DataTable1”提供数据源实例.”这主要是说在为ReportView ...

  2. C# - VS2019 WinFrm应用程序开发报表 - ReportViewer控件初涉

    前言 简单报表我们可以通过label.textBox和PrintDialog来实现,但是一般在实际生产过程中,用户的报表需求一般都是比较复杂的. 本篇主要记录对于传统中国式复杂报表的处理方法和解决思路 ...

  3. VS2017中使用ReportViewer控件,vs2017找不到Microsoft Rdlc Report Designer for Visual Studio

    VS2017中没有ReportViewer控件,这个控件用来实现在项目中显示和打印关系数据库中的表比较容易,特别是想要打印的时候,这个比用DataGridView和PrintDocument要简单一些 ...

  4. 转网页WB.ExecWB控件打印方法

    网页WB.ExecWB控件打印方法 2010-02-01 12:48 代码: <table width="100%" cellpadding="1" on ...

  5. delphi附带通用控件安装方法:

    附带通用控件安装方法:----------基本安装1.对于单个控件,Componet-->install component..-->PAS或DCU文件-->install;2.对于 ...

  6. 部署报表和 ReportViewer 控件 rdlc

    部署报表和 ReportViewer 控件 您可以将报表和 ReportViewer 控件作为应用程序的一部分自由发布.根据控件类型以及报表是配置为本地处理还是远程处理,部署要求会有很大不同.在同一个 ...

  7. WdatePicker日历控件使用方法(转)

    转自:http://www.cnblogs.com/weixing/archive/2011/08/15/2139431.html WdatePicker日历控件使用方法   1. 跨无限级框架显示 ...

  8. 【转】UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)

    原文地址:http://blog.csdn.net/zhubaitian/article/details/39777951 在本人之前的一篇文章<<Appium基于安卓的各种FindEle ...

  9. UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)

    在本人之前的一篇文章<<Appium基于安卓的各种FindElement的控件定位方法实践和建议>>第二章节谈到Appium可以通过使用UIAutomator的方法去定位And ...

随机推荐

  1. 2015第15周六Java线程池

    Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具.真正的线程池接口是ExecutorService. 比较重要的几个类: Ex ...

  2. 什么是野指针?(What is a wild pointer?)

    未被初始化的变量称为野指针(wild pointer).顾名思义,我们不知道这个指针指向内存中的什么地址,使用不当程序会产生各种各样的问题. 理解下面的例子: int main() { int *p; ...

  3. OpenWrt opkg 在线源默认配置

    dest root /dest ram /tmplists_dir ext /var/opkg-listsoption overlay_root /overlaysrc/gz barrier_brea ...

  4. python字符集选择

    # coding=utf8 或者 # -*- coding:utf-8 -*- 在python2 中默认是ASCII码的字符集,但可以引入其他的字符集  这个需要在头信息中引入: 而在python3中 ...

  5. Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6786239 Android 系统的运行时库层代 ...

  6. 利用Python进行数据分析——数据规整化:清理、转换、合并、重塑(七)(1)

    数据分析和建模方面的大量编程工作都是用在数据准备上的:载入.清理.转换以及重塑.有时候,存放在文件或数据库中的数据并不能满足你的数据处理应用的要求.很多人都选择使用通用编程语言(如Python.Per ...

  7. boost.asio系列——Timer

    同步Timer asio中提供的timer名为deadline_timer,它提供了超时计时的功能.首先以一个最简单的同步Timer为例来演示如何使用它. #include<iostream&g ...

  8. iOS多线程及其感悟

    感觉每天都是匆匆忙忙的,每天似乎都是时间不够用一样,可是等真的想要动手敲代码的时候才发现,原来还有好多好多的知识点不是太熟练,所以,人不可以一直感觉自我良好, 有时间就是那种自我感觉良好的心态毁了自己 ...

  9. 为什么报错说req未定义,createServer只接受匿名函数吗?

    var http = require('http');var server = new http.createServer(handlerRequest(req,res));server.listen ...

  10. Jquery on() 动态绑定事件

    之前就一直受这个问题的困扰,在jQuery1.7版本之后添加了on方法,之前就了解过,其优越性高于live(),bind(),delegate()等方法,在此之前项目中想用这个来测试结果发现,居然动态 ...