VS2005中ReportViewer简单运用

VS2005ReportViewer简单运用

      最近是报表控件是做了一种有一种啊,记得以前做的是Devexpress公司的报表控件,后来又用了水晶报表,现在研究微软vs2005自带的ReportViewer (步骤参照网上的,主要是一些关键地方已用红色标出)

本示例操作 主要实现
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.
全部保存,按F5Ctrl+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.
设置ReportViewer1Visiblefalse
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程序的

         <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt" Height="400px" Visible="False" Width="400px">
             <LocalReport ReportPath="Report1.rdlc">
                 <DataSources>
                     <rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="
DataSet1_Orders" />
                 </DataSources>
             </LocalReport>
         </rsweb:ReportViewer>
       
中的<DataSources>Name="DataSet1_Orders"是一致的


    
可以通过对DataSet的填充时的sql语句等的定制 来得到所需要的数据 以便报表呈现
    
需要注意的是由于ReportViewer1此时的关联报表为Report1.rdlc,所以DataSetTables[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
   
设置ReportViewer1Visiblefalse
   
双击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();
     }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值