【问题标题】:How to bind IEnumerable<T> to a Crystal Report document in C#?如何将 IEnumerable<T> 绑定到 C# 中的 Crystal Report 文档?
【发布时间】:2011-06-12 05:07:13
【问题描述】:
我在使用 Crystal Report 和 Entity Framework 时遇到问题。我开发了一个 WinForm 应用程序,它只有一个函数可以从表中获取所有记录,然后将它们全部填充到 Crystal Report 中。
我对 CR 2010 很陌生,我已经搜索了一段时间,但仍然没有找到解决方案。
假设我有一个包含以下列的表(客户):
ID, Name, Buy, Price
和一份 CR 文件:
ID: @ID
Name: @Name
Buy Price
@Buy @Price
TotalPrice
我们可以直接将客户列表绑定到 CR 文档而不将其转换为 XML 或 Dataset 对象吗?
任何帮助将不胜感激!
【问题讨论】:
标签:
entity-framework
data-binding
binding
crystal-reports
ienumerable
【解决方案1】:
CrystalReportViewer1.HasToggleGroupTreeButton = false;
CrystalReportViewer1.HasToggleParameterPanelButton = false;
CrystalReportViewer1.HasPrintButton = true;
CrystalReportViewer1.HasDrilldownTabs = false;
CrystalReportViewer1.ToolPanelView = CrystalDecisions.Web.ToolPanelViewType.None;
CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;
if( Request.QueryString["type"] == "1")
{
CarPark_DataSet ds = new CarPark_DataSet();
CarPark_DataSetTableAdapters.CarParkTableAdapter customersTableAdapter1;
customersTableAdapter1 = new CarPark_DataSetTableAdapters.CarParkTableAdapter();
//Convert.ToDateTime(txtStartDate.Text)
//customersTableAdapter1.FillBy(ds.CarPark, Convert.ToDateTime(Request.QueryString["start"]), Convert.ToDateTime(Request.QueryString["end"]));
customersTableAdapter1.FillBy(ds.CarPark, Convert.ToDateTime(Request.QueryString["start"]) , Convert.ToDateTime(Request.QueryString["end"]));
objRpt = new ReportDocument();
string reportPath = Server.MapPath("Detailed_CrystalReport.rpt");
objRpt.Load(reportPath);
objRpt.SetDataSource(ds.Tables[0]);
((CrystalDecisions.CrystalReports.Engine.TextObject)objRpt.ReportDefinition.ReportObjects["StartDate"]).Text = Request.QueryString["start"];
((CrystalDecisions.CrystalReports.Engine.TextObject)objRpt.ReportDefinition.ReportObjects["EndDate"]).Text = Request.QueryString["end"];
CrystalReportViewer1.ReportSource = objRpt;
CrystalReportViewer1.RefreshReport();
//objRpt.Close();
}