我目前正在处理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();
有谁知道???请帮助我...
答案 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,以便下次获得新的值等)。