RDLC报表系列--------钻取报表
鉆取報表開發(fā)步驟:
?? 先看總體效果:如圖
??
點擊單據(jù)編號
?
?下面就做個看看...
?? 1.先添加一個RDLC報表文件作為鉆取報表.
???????? 添加一個RDLC報表,在設計界面添加一個表格Table,配置好數(shù)據(jù)源如圖:
2.設置鉆取報表對應的字段.
?? (1) 也許看到上面orderID為什么和別的不一樣,多了個下劃線了吧!不急,這里看怎么設置的.
??? 鼠標點擊orderID這列,右擊文本框屬性,找到字體選項卡如圖:
在效果里將默認改為下劃線。
?(2)下面設置鉆取報表.
?? 然后再選擇操作選項卡,第一步:設置啟用為超鏈接為:轉到報表(R).第二步:設置指定報表,指定報表里面填寫鉆取子報表的報表名如(DrillThoughReport) 不要加.rdlc 后綴名哦.第三步:添加參數(shù),添加參數(shù)名和參數(shù)的值(值可以是Table 的列值和參數(shù)等)
總體設置如圖:
?
? 點擊確認.下一步設置子報表了.
3.設置子報表
? 轉到子報表里,添加子報表的參數(shù),這個參數(shù)來自哪里呢?當然是前面主報表里面設置過的參數(shù)啊,所以在這里添加參數(shù),參數(shù)名orderID(注意參數(shù)名的大小寫)并選中允許空白值和Null值.然后點擊確認.最后在子報表里面添加數(shù)據(jù)就OK了.(主報表的數(shù)據(jù)源實際和子報表的數(shù)據(jù)源是一對多的關系 這里的主外鍵就是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>
/// 顯示報表數(shù)據(jù)
/// </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 創(chuàng)建鉆取的主表
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>
/// 子報表數(shù)據(jù)
/// </summary>
/// <returns></returns>
public DataTable GetTable()
{
DataTable dt = new DataTable("dt_dry");//創(chuàng)建一個名為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#入門經(jīng)典";
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 入門經(jīng)典";
dr[2] = 88.93;
dr[3] = 9;
dr[4] = "20120209004";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 104;
dr[1] = "php 經(jīng)典案例教材";
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报表系列--------钻取报表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SqlDataAdapter和SqlCo
- 下一篇: Direct3D中设备丢失处理