【发布时间】:2012-04-23 18:48:45
【问题描述】:
我有一个 rdlc 报告名称attendence.rdlc,它采用三个参数employeeId、monthId 和year 来生成员工的每月出勤状态。像
当我单击 >> 按钮时:
我需要调用钻取(在我的情况下是同一份报告)报告增加月份和年份的参数。
如何在 rdlc 报表中创建钻取事件处理程序?
【问题讨论】:
我有一个 rdlc 报告名称attendence.rdlc,它采用三个参数employeeId、monthId 和year 来生成员工的每月出勤状态。像
当我单击 >> 按钮时:
我需要调用钻取(在我的情况下是同一份报告)报告增加月份和年份的参数。
如何在 rdlc 报表中创建钻取事件处理程序?
【问题讨论】:
我的问题已经解决了。在 rdlc 中,当有人调用 goto_report/goto_url 时,它实际上是由 Drillthrough 报告调用的。因此,如果我显然在回发 url 之外创建了一个偶数处理程序,例如
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//otherscode u need
//now call report first time
string path = HttpContext.Current.Server.MapPath(your report path);
ReportViewer1.Reset(); //important
ReportViewer1.ProcessingMode = ProcessingMode.Local;
ReportViewer1.LocalReport.EnableHyperlinks = true;
LocalReport objReport = ReportViewer1.LocalReport;
objReport.DataSources.Clear();
objReport.ReportPath = path;
// Add Parameter if you need
List<ReportParameter> parameters = new List<ReportParameter>();
parameters.Add(new ReportParameter("parameterName", ParameterValue));
ReportViewer1.LocalReport.SetParameters(parameters);
ReportViewer1.ShowParameterPrompts = false;
ReportViewer1.ShowPromptAreaButton = false;
ReportViewer1.LocalReport.Refresh();
//Add Datasourdce
ReportDataSource reportDataSource = new ReportDataSource();
reportDataSource.Name = "odsReportData";
reportDataSource.Value = YourReportDataSourseValue;
objReport.DataSources.Add(reportDataSource);
objReport.Refresh();
}
ReportViewer1.Drillthrough += new DrillthroughEventHandler(DemoDrillthroughEventHandler);
}
public void DemoDrillthroughEventHandler(object sender, DrillthroughEventArgs e)
{
/*Collect report parameter from drillthrough report*/
ReportParameterInfoCollection DrillThroughValues = e.Report.GetParameters();
Type parameterName = Type.Parse(DrillThroughValues[1].Values[0].ToString());
/*Bind data source with report*/
LocalReport localReport = (LocalReport)e.Report;
localReport.DataSources.Clear();
localReport.DataSources.Add(new ReportDataSource("odsData", reportData));
localReport.EnableHyperlinks = true;
/*Add parameter to the report if report have paramerter*/
List<ReportParameter> parameters = new List<ReportParameter>();
parameters.Add(new ReportParameter("ParameterName", ParameterValue));
localReport.SetParameters(parameters);
localReport.Refresh();
}
【讨论】: