钻取报表开发步骤:

先看总体效果:如图

点击单据编号

下面就做个看看...

1.先添加一个RDLC报表文件作为钻取报表.

添加一个RDLC报表,在设计界面添加一个表格Table,配置好数据源如图:

2.设置钻取报表对应的字段.

(1) 也许看到上面orderID为什么和别的不一样,多了个下划线了吧!不急,这里看怎么设置的.

鼠标点击orderID这列,右击文本框属性,找到字体选项卡如图:

在效果里将默认改为下划线。

(2)下面设置钻取报表.

然后再选择操作选项卡,第一步:设置启用为超链接为:转到报表(R).第二步:设置指定报表,指定报表里面填写钻取子报表的报表名如(DrillThoughReport) 不要加.rdlc 后缀名哦.第三步:添加参数,添加参数名和参数的值(值可以是Table 的列值和参数等)

总体设置如图:

点击确认.下一步设置子报表了.

3.设置子报表

转到子报表里,添加子报表的参数,这个参数来自哪里呢?当然是前面主报表里面设置过的参数啊,所以在这里添加参数,参数名orderID(注意参数名的大小写)并选中允许空白值和Null值.然后点击确认.最后在子报表里面添加数据就OK了.(主报表的数据源实际和子报表的数据源是一对多的关系 这里的主外键就是orderID啦)

如图:

好了。设置报表阶段基本完成.下面就代码了。

4.页面html 代码

View Code

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Test.Default" %>

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"    Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><title></title></head><body><form id="form1" runat="server"><asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager><div><rsweb:ReportViewer ID="ReportViewer1" Width="100%" runat="server"            ondrillthrough="ReportViewer1_Drillthrough"><LocalReport ReportPath="Report.rdlc">

</LocalReport></rsweb:ReportViewer>

</div></form></body></html>

5.后台CS 文件代码

View Code

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Data;using Microsoft.Reporting.WebForms;using Microsoft.Reporting;using System.Drawing.Printing;using System.Drawing.Imaging;using System.Diagnostics;namespace Test{public partial class Default : System.Web.UI.Page    {protected void Page_Load(object sender, EventArgs e)        {if (!IsPostBack)            {                Display();            }        }

/// <summary>/// 显示报表数据/// </summary>        private void Display()        {            DataTable dt = GetReportData();            ReportViewer1.LocalReport.EnableHyperlinks = true;            ReportViewer1.Visible = true;            ReportViewer1.LocalReport.DataSources.Clear();            ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dt));            ReportViewer1.LocalReport.Refresh();        }

/// <summary>/// 钻取的主表/// </summary>/// <returns></returns>        public DataTable GetReportData()        {#region 创建钻取的主表            DataTable dt = new DataTable("dt_dry");

            dt.Columns.Add(new DataColumn("orderid", typeof(string)));            dt.Columns.Add(new DataColumn("userName", typeof(string)));            dt.Columns.Add(new DataColumn("address", typeof(string)));            dt.Columns.Add(new DataColumn("orderDate", typeof(DateTime)));

            DataRow dr = dt.NewRow();            dr["orderid"] = "20120209001";            dr["userName"] = "张三";            dr["address"] = "北京";            dr["orderDate"] = DateTime.Now;            dt.Rows.Add(dr);

            dr = dt.NewRow();            dr["orderid"] = "20120209002";            dr["userName"] = "李四";            dr["address"] = "上海";            dr["orderDate"] = DateTime.Now;            dt.Rows.Add(dr);

            dr = dt.NewRow();            dr["orderid"] = "20120209003";            dr["userName"] = "王五";            dr["address"] = "北京";            dr["orderDate"] = DateTime.Now;            dt.Rows.Add(dr);

            dr = dt.NewRow();            dr["orderid"] = "20120209004";            dr["userName"] = "马六";            dr["address"] = "湖南";            dr["orderDate"] = DateTime.Now;            dt.Rows.Add(dr);

            dr = dt.NewRow();            dr["orderid"] = "20120209005";            dr["userName"] = "袁七";            dr["address"] = "湖北";            dr["orderDate"] = DateTime.Now;            dt.Rows.Add(dr);return dt;#endregion        }

/// <summary>/// 子报表数据/// </summary>/// <returns></returns>        public DataTable GetTable()        {            DataTable dt = new DataTable("dt_dry");//创建一个名为dt_dry的DataTalbe

            dt.Columns.Add(new DataColumn("fitemno", typeof(int)));//为dt_dry表内建立Column            dt.Columns.Add(new DataColumn("fitemName", typeof(string)));            dt.Columns.Add(new DataColumn("fsaleamt", typeof(decimal)));            dt.Columns.Add(new DataColumn("fqty", typeof(int)));            dt.Columns.Add(new DataColumn("orderid", typeof(string)));

            DataRow dr = dt.NewRow();            dr[0] = 100;            dr[1] = "C#入门经典";            dr[2] = 87.67;            dr[3] = 2;            dr[4] = "20120209001";            dt.Rows.Add(dr);            dr = dt.NewRow();            dr[0] = 101;            dr[1] = "C#程序设计";            dr[2] = 67.58;            dr[3] = 5;            dr[4] = "20120209001";            dt.Rows.Add(dr);            dr = dt.NewRow();            dr[0] = 102;            dr[1] = "SQL 2005 从入门到精通";            dr[2] = 99.95;            dr[3] = 7;            dr[4] = "20120209002";            dt.Rows.Add(dr);            dr = dt.NewRow();            dr[0] = 103;            dr[1] = "asp.net 入门经典";            dr[2] = 88.93;            dr[3] = 9;            dr[4] = "20120209004";            dt.Rows.Add(dr);            dr = dt.NewRow();            dr[0] = 104;            dr[1] = "php 经典案例教材";            dr[2] = 45.55;            dr[3] = 13;            dr[4] = "20120209003";            dt.Rows.Add(dr);return dt;

        }/// <summary>/// 报表钻取事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>        protected void ReportViewer1_Drillthrough(object sender, DrillthroughEventArgs e)        {

            DataTable dt = GetTable();            LocalReport localReport = (LocalReport)e.Report;            localReport.DataSources.Add(new ReportDataSource("DataSet1", dt));            localReport.Refresh();        }    }}

好咯.搞定了.

转载于:https://www.cnblogs.com/wjbobo/archive/2012/03/07/2383817.html

RDLC报表系列--------钻取报表相关推荐

  1. [转]配置子报表和钻取报表

    您可以使用子报表和钻取报表将相关报表链接在一起. 子报表是在父报表的表体内嵌入其他报表的项.从概念上讲,子报表类似于为其他网页内容提供容器的网页中的框架.子报表呈现在包含它的父报表内.同时处理和显示这 ...

  2. 使用RDLC报表(四)--钻取式报表

    本文内以MSServer自带Northwind库文件内的Customers及Orders这两个表为例,建立两个报表文件,在查询得出Customers的表数据后,点击此表内的CustomerID数据,报 ...

  3. RDLC报表系列(一) 简单的动态数据绑定和配置

    RDLC报表系列(一) 简单的动态数据绑定和配置 原文:RDLC报表系列(一) 简单的动态数据绑定和配置 RDLC系列链接 RDLC报表系列(一) 简单的动态数据绑定和配置  RDLC报表系列(二) ...

  4. 帆软报表如何传递主表原有参数给子表呢_报表工具--钻取功能--超链接下钻

    超链接钻取是一个非常实用的功能,在各种项目.应用中使用广泛,能够帮助数据分析用户清晰.直观地了解不同层级数据的上下级关系,并聚焦于自己感兴趣的内容.当然,润乾报表也支持这个功能,前面小编有介绍过列表钻 ...

  5. Odoo10参考系列--QWeb报表

    报表是写在HTML / QWeb中,像Odoo中的所有普通视图.你可以使用普通QWeb 流程控制工具.PDF的渲染是通过wkhtmltopdf执行的. 如果要在某个模型上创建报表,则需要定义该报表和它 ...

  6. 永洪报表工具_报表工具对比选型系列用例——排名及跨行组统计

    继<多源分片报表>后,我们继续考察这些报表工具对复杂报表的支持程度. 排名与跨行组运算也是典型的中国复杂报表形式,这类报表的源数据集通常比较简单,但在表格的单元格之间会有较随意的计算要求. ...

  7. c mysql 报表_c 数据库报表打印

    C# WinForm开发系列 - Print 收集了一些打印方面文章, 包含WinForm, Asp.Net中使用, 有结合Excel/Word, 也有直接使用报表工具打印功能, Web打印采用css ...

  8. 报表引擎 - 报表应用思路

    OpenExpressApp计划之内包括一个报表引擎OpenReport.2006年时在公司负责研究并实现了一个报表引擎,写了几篇博文(<交叉表的报表设计>.<研究润乾报表的实现&g ...

  9. 金蝶报表制作_BI报表不光好看,更好用,为什么很多人却还不知道?

    要在短时间内对海量数据实现有效的数据整理清洗,快速理清数据情况,掌握数据信息,可太为难一般的数据分析报表了.但既然大数据时代给了这样的数据分析难题,自然也会给出一个有效的解决方法--BI报表.但很奇怪 ...

最新文章

  1. 注入(一):APC注入
  2. rsync配置和使用
  3. 两个数组对象合并操作,键值对合并
  4. ajax 连接java,如何使用Ajax连接到Java servlets?
  5. 基于mysql的全文索引
  6. [cocos2dx]斗地主随机发牌界面生成
  7. java找链表中最小值_算法图解:如何找出栈中的最小值?
  8. web 前端课程体系(1/4)
  9. 我们梳理了国内外逾80家公司,发现6大关键趋势 | 36氪眼健康行业报告
  10. poj 3744 Scout YYF I (矩阵快速幂 优化 概率dp)
  11. 玲听 | 蚂蚁金服布局区块链核心3问
  12. 【转】中专生的C++之路!
  13. smbd of samba-3.0.23b internal
  14. bps(bitspersecond)是什么?
  15. 详解联想bios怎么进入u盘启动
  16. session 生命周期,cookie详解
  17. C语言函数指针和返回指针值的函数
  18. 【youcans 的 OpenCV 学习课】7. 空间域图像滤波
  19. 2020VIVO春招编程题手机解锁图案
  20. 可编程 USB 转串口适配器开发板专用工具 S2STool 介绍

热门文章

  1. Web安全手册(漏洞理解、漏洞利用总结)
  2. [Machine learning] 国外程序员整理的机器学习资源大全
  3. WEB中的敏感文件泄露
  4. R语言进阶 | 变量赋值背后的机制与R语言内存优化
  5. 朴素贝叶斯算法详解及python代码实现
  6. PHP全栈开发(八):CSS Ⅹ 导航栏制作
  7. TensorFlow Java+eclipse下环境搭建
  8. win下php5.4安装ffmpeg-php扩展
  9. 研究Mysql优化得出一些建设性的方案
  10. tomcat和apache的结合   看最重要的   文档有点乱