qq_35508625 2016-12-16 02:27 采纳率: 0%
浏览 2147
已结题

求vs2013报表控件ReportViewer详解

求vs2013报表控件ReportViewer详解矩阵 有源代码和视频最好。

  • 写回答

1条回答 默认 最新

  • 我不懂电脑 2016-12-16 03:37
    关注

    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. 全部保存,按F5或Ctrl F5 运行,以查看初步效果

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

    1. 回到报表Report1.rdlc的设计界面 点击 报表 菜单 下的“报表参数”
    2. 在报表参数在设置框中 添加一个报表参数 进行相关设置 并 确定以保存 (如其参数名称为rptParaA,类型为String)
    3. 拉入一个文本框的报表项到Report1.rdlc的设计界面 以做为该报表的标题显示
    4. 选中并右键单击该文本框,在弹出的菜单中选择“表达式”, 进入“编辑表达式”的对话框
    5. 在“编辑表达式”的对话框中,选择 参数, 并双击刚才设置的rptParaA,使文本框的值=Parameters!rptParaA.Value
    6. 保存对Report1.rdlc的修改
    7. 因为新的Report1.rdlc报表的文本框需要有报表参数值的传入 所以要在ReportViewer1 对Report1.rdlc的呈现时 对Default.aspx.cs的编辑
    8. 在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程序的
    
         <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt" Height="400px" Visible="False" Width="400px">
             <LocalReport ReportPath="Report1.rdlc">
                 <DataSources>
    

     


    /rsweb:ReportViewer
    中的的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.保存 运行 点击按钮 报表效果查看

    评论

报告相同问题?

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作