Report报表学习系列四
因为过春节的缘故,第四篇多等了一年。
上一篇写到表参数设置和建立子表,分组,本篇将学习使用钻取报表。其实只要会使用参数和建立子报表,钻取报表是很简单的事情了。
首先简单地说一下这里的钻取报表的目的:当点击相应的学生后面的查看按钮后,能跳转到另一张报表,显示该学生所在班级的所有学生信息。
一 在文件夹Report中添加报表文件StudentDetail.rdlc,拖放一张表。报表-选择数据源为RptDataSet_Student,报表-建立参数ClassID,选中表,右键-属性-筛选器,设置(=Fields!ClassID.Value)=(=Fields!Sname.Value),确定。
二 在rptStudent.rdlc的表的最右侧插入列,列标题为"查看所在班级",详细内容为"查看",如下图1.1
{
e.DataSources .Add (
new ReportDataSource("RptDataSet_Student", studentDataSource.GetStudentData())
);
}
public FrmRptMain()
{
InitializeComponent();
}
private ClassDataSource dataSource = new ClassDataSource();
private StudentDataSource studentDataSource = new StudentDataSource();
private void FrmRptMain_Load(object sender, EventArgs e)
{
this.rptViewMain.LocalReport.SubreportProcessing +=
new SubreportProcessingEventHandler(LocalReport_SubreportProcessing);
this.rptViewMain.Drillthrough += new DrillthroughEventHandler(LocalReport_DrillthroughEventHandler);
this.rptViewMain.LocalReport.ReportEmbeddedResource = "ReportingAPP.Report.rptClass.rdlc";
this.rptViewMain.LocalReport.DataSources.Add(
new ReportDataSource("RptDataSet_Class", dataSource.GetClassData())
);
this.rptViewMain.RefreshReport();
}
private void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
{
e.DataSources.Add(
new ReportDataSource("RptDataSet_Student", studentDataSource.GetStudentData())
);
}
private void LocalReport_DrillthroughEventHandler(object sender, DrillthroughEventArgs e)
{
LocalReport rpt = e.Report as LocalReport;
if (rpt != null)
{
rpt.DataSources.Add(new ReportDataSource("RptDataSet_Student", studentDataSource.GetStudentData()));
}
}
五 调试运行
主界面如下: