前一段時間,由于在項目中要用到報表做統(tǒng)計,所以我學習了一下ASP.NET水晶報表的使用。水晶報表的執(zhí)行模式(也就是取數(shù)據(jù)的方法)可以分為兩種:
另外一種就是Push模式:此時開發(fā)者不得不自己編寫代碼連接數(shù)據(jù)并組裝DataSet,同時將它傳送至報表。在些這種情況下,通過使用連接共享以及限制記錄集合的大小,可以使用報表性能最大化。
--StrongTyped 報表: 當你將報表文件加入到項目中去時,它就變成了一個了“ strongly-typed“報表。在這些情況下,你將擁有直接創(chuàng)建報表的對象的權力,這將減少一些代碼并且能夠提供一些性能。
--UnTyped報表:這里的報表并不直接包含在項目中,因此稱為‘un-typed' 報表。在這種情況下,你不得不使用水晶報表的”ReportDocuemt“對象建立一個實例,并且”手動“地凋用報表。
ReportDocument ReportDoc = new ReportDocument();
ReportDoc.Load(Server.MapPath("MyPullDemo.rpt"));
#region 解決登錄錯誤問題
TableLogOnInfo logonInfo = new TableLogOnInfo();//
foreach( CrystalDecisions.CrystalReports.Engine.Table tb in ReportDoc.Database.Tables)
{
logonInfo = tb.LogOnInfo;
logonInfo.ConnectionInfo.ServerName = "(local)";
logonInfo.ConnectionInfo.DatabaseName = "myDatabase";//
logonInfo.ConnectionInfo.UserID = "sa";
logonInfo.ConnectionInfo.Password = "sa1234";//
tb.ApplyLogOnInfo(logonInfo);
}
#endregion
CrystalReportViewer1.ReportSource = ReportDoc;
CrystalReportViewer1.DataBind();
DataSet ds = new DataSet();
MyAdapter.Fill(ds,"SaleOfCuntry");
ReportDoc.SetDataSource(ds);
Crv.ReportSource = ReportDoc;
Crv.DataBind();