RDLC報表系列--------鑽取報表


鑽取報表開發步驟:

   先看總體效果:如圖

  

點擊單據編號

 

 下面就做個看看...

   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();
}
}
}

好咯.搞定了.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM