如何为Crystal Report提供选择条件

时间:2011-04-20 10:43:04

标签: c# asp.net crystal-reports

我目前正在处理Crystal Report,我的问题是:

我想在另一个页面上显示Crystal Report,我的意思是当管理员从Employee中选择任何DropDownList并点击“查看报告”,然后该报告就会显示在另一个页面上。我怎么能这样做?

修改

在我的AdminReport.aspx.cs页面中,我点击了可以重定向到新Employee页面的“查看”按钮后,加载了员工姓名并从DropDownList中选择了一个Report.aspx 。我已将报告绑定源放入此页面[(Report.aspx.cs)。

这是我的代码:

ReportDocument rpt = new ReportDocument();
rpt.Load(Server.MapPath("CryRepTest.rpt"));
rpt.SetDatabaseLogon("sa", "password_1");
var empid = drpdwnEmployee.SelectedItem.Value;
rpt.RecordSelectionFormula = "{AdminReportView.EmployeeID}=" + empid;
CrystalReportViewer1.ReportSource = rpt;
CrystalReportViewer1.DataBind();

有谁知道???请帮助我...

1 个答案:

答案 0 :(得分:0)

在我做这个之前的类似要求

首先创建了一个名为ReportDto的类

public class ReportDto { public string EmployeeId {get;set;} //Other required properties  }

On AdminReport.aspx.cs

OnButtonClick () //Whatever event of ViewReport you may have
ReportDto dto = new ReportDto() { EmployeeId = drpEmployee.SelectedValue };


Session["CurrentReport"] = dto;
Response.Redirect(ViewReport.aspx)

在Page_Load上的ViewReport.aspx

ReportDto dto = (ReportDto)Session["CurrentReport"]
ReportDocument rpt = new ReportDocument();      
rpt.ReportSelectionForumula = "{AdminReportView.EmployeeID}=" + dto.EmployeeId

以及此后的其他常规声明。这只是一个给你一个想法的样本。这样做的好处是,如果您的过滤器更改或增加,只需在Dto类中添加属性,然后在此处将它们一起传输。 (注意,你必须做到检查null的适当的困境,为会话分配null,以便下次获得新的值等)。