CrystalReport報表不只能列印資料庫的資料,也可以列類別內的資料(把類別內的資料當作資料庫的Table)
作法:
1.在專案內,建立類別(隨便設幾個公用屬性),例如:Stock這個類別
2.記得build一下(就算程式碼一定沒錯,還是要build一下,不然等會報表會找不到它)
3.加入新項目,建立一個新的CrystalReport
在這裡,記得資料來源要選"專案資料"->".Net物件" ->本專案的的Stock,把它子節點內的欄位通通帶到右邊來
4.畫面上出現基本的報表的band,然後記得"欄位總管"裡面的"資料庫欄位"會出現,Stock裡的公用屬性(前面有標簽符號,這些可以拉到Detail Band上面喔)
5.把Stock的欄位拉到Detail Band上面
6.切換到Form1.cs[設計],這裡有個crystalreportView,它拉出來預設是Fill,把它改成Bottom(因為畫面上要放個button)
7.找空位放button,在click事件中寫如下:
ArrayList stockValues;//記得using System.Collections;
Stock a1Stock=new Stock("+",20,20);
Stock a2Stock=new Stock("-",10,20);
Stock a3Stock=new Stock("+",200,20);
Stock a4Stock=new Stock("+",12,20);
Stock a5Stock = new Stock("+", 19, 10);
stockValues = new ArrayList();
stockValues.Add(a1Stock);
stockValues.Add(a2Stock);
stockValues.Add(a3Stock);
stockValues.Add(a4Stock);//把Stock類別通通加入至ArryList中
ReportDocument stockObjectsReport;//記得using CrystalDecisions.CrystalReports.Engine;
string reportPath = @"C:\.x\Example\WindowsApplication12\WindowsApplication12\StockObjects.rpt";//
stockObjectsReport = new ReportDocument();
stockObjectsReport.Load(reportPath);
stockObjectsReport.SetDataSource(stockValues);//這裡是重點,DataSource可以是ArryList格式
crystalReportViewer1.SelectionFormula = "";//這個最好,清一下,也許這個
crystalReportViewer1會切換很多個rpt
crystalReportViewer1.ReportSource = stockObjectsReport;
8.程式執行一後,按下按鈕看看