RDLC报表系列--------钻取报表
钻取报表开发步骤:
先看总体效果:如图
点击单据编号
下面就做个看看...
1.先添加一个RDLC报表文件作为钻取报表.
添加一个RDLC报表,在设计界面添加一个表格Table,配置好数据源如图:
2.设置钻取报表对应的字段.
(1) 也许看到上面orderID为什么和别的不一样,多了个下划线了吧!不急,这里看怎么设置的.
鼠标点击orderID这列,右击文本框属性,找到字体选项卡如图:
在效果里将默认改为下划线。
(2)下面设置钻取报表.
然后再选择操作选项卡,第一步:设置启用为超链接为:转到报表(R).第二步:设置指定报表,指定报表里面填写钻取子报表的报表名如(DrillThoughReport) 不要加.rdlc 后缀名哦.第三步:添加参数,添加参数名和参数的值(值可以是Table 的列值和参数等)
总体设置如图:
点击确认.下一步设置子报表了.
3.设置子报表
转到子报表里,添加子报表的参数,这个参数来自哪里呢?当然是前面主报表里面设置过的参数啊,所以在这里添加参数,参数名orderID(注意参数名的大小写)并选中允许空白值和Null值.然后点击确认.最后在子报表里面添加数据就OK了.(主报表的数据源实际和子报表的数据源是一对多的关系 这里的主外键就是orderID啦)
如图:
好了。设置报表阶段基本完成.下面就代码了。
4.页面html 代码
<%@ 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 文件代码
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报表系列--------钻取报表相关推荐
- [转]配置子报表和钻取报表
您可以使用子报表和钻取报表将相关报表链接在一起. 子报表是在父报表的表体内嵌入其他报表的项.从概念上讲,子报表类似于为其他网页内容提供容器的网页中的框架.子报表呈现在包含它的父报表内.同时处理和显示这 ...
- 使用RDLC报表(四)--钻取式报表
本文内以MSServer自带Northwind库文件内的Customers及Orders这两个表为例,建立两个报表文件,在查询得出Customers的表数据后,点击此表内的CustomerID数据,报 ...
- RDLC报表系列(一) 简单的动态数据绑定和配置
RDLC报表系列(一) 简单的动态数据绑定和配置 原文:RDLC报表系列(一) 简单的动态数据绑定和配置 RDLC系列链接 RDLC报表系列(一) 简单的动态数据绑定和配置 RDLC报表系列(二) ...
- 帆软报表如何传递主表原有参数给子表呢_报表工具--钻取功能--超链接下钻
超链接钻取是一个非常实用的功能,在各种项目.应用中使用广泛,能够帮助数据分析用户清晰.直观地了解不同层级数据的上下级关系,并聚焦于自己感兴趣的内容.当然,润乾报表也支持这个功能,前面小编有介绍过列表钻 ...
- Odoo10参考系列--QWeb报表
报表是写在HTML / QWeb中,像Odoo中的所有普通视图.你可以使用普通QWeb 流程控制工具.PDF的渲染是通过wkhtmltopdf执行的. 如果要在某个模型上创建报表,则需要定义该报表和它 ...
- 永洪报表工具_报表工具对比选型系列用例——排名及跨行组统计
继<多源分片报表>后,我们继续考察这些报表工具对复杂报表的支持程度. 排名与跨行组运算也是典型的中国复杂报表形式,这类报表的源数据集通常比较简单,但在表格的单元格之间会有较随意的计算要求. ...
- c mysql 报表_c 数据库报表打印
C# WinForm开发系列 - Print 收集了一些打印方面文章, 包含WinForm, Asp.Net中使用, 有结合Excel/Word, 也有直接使用报表工具打印功能, Web打印采用css ...
- 报表引擎 - 报表应用思路
OpenExpressApp计划之内包括一个报表引擎OpenReport.2006年时在公司负责研究并实现了一个报表引擎,写了几篇博文(<交叉表的报表设计>.<研究润乾报表的实现&g ...
- 金蝶报表制作_BI报表不光好看,更好用,为什么很多人却还不知道?
要在短时间内对海量数据实现有效的数据整理清洗,快速理清数据情况,掌握数据信息,可太为难一般的数据分析报表了.但既然大数据时代给了这样的数据分析难题,自然也会给出一个有效的解决方法--BI报表.但很奇怪 ...
最新文章
- 注入(一):APC注入
- rsync配置和使用
- 两个数组对象合并操作,键值对合并
- ajax 连接java,如何使用Ajax连接到Java servlets?
- 基于mysql的全文索引
- [cocos2dx]斗地主随机发牌界面生成
- java找链表中最小值_算法图解:如何找出栈中的最小值?
- web 前端课程体系(1/4)
- 我们梳理了国内外逾80家公司,发现6大关键趋势 | 36氪眼健康行业报告
- poj 3744 Scout YYF I (矩阵快速幂 优化 概率dp)
- 玲听 | 蚂蚁金服布局区块链核心3问
- 【转】中专生的C++之路!
- smbd of samba-3.0.23b internal
- bps(bitspersecond)是什么?
- 详解联想bios怎么进入u盘启动
- session 生命周期,cookie详解
- C语言函数指针和返回指针值的函数
- 【youcans 的 OpenCV 学习课】7. 空间域图像滤波
- 2020VIVO春招编程题手机解锁图案
- 可编程 USB 转串口适配器开发板专用工具 S2STool 介绍