1、打開FastReport的設計器,
2、選擇【File】-》【New】 新建FastReport模板。
3、選擇【View】-》【Data】,顯示如下,導出Dictionary,保存。
4、編輯導出的.frd文件,編輯完后保存,再導入。
(1) TableDataSource 是數據源節點。
(2) Name是DataSet對象的Table的表名。
(3) Column是Table的列,模板綁定數據時,使用Column的Name屬性。如下:
<?xml version="1.0" encoding="utf-8"?>
<Dictionary>
<TableDataSource Name="Table1" ReferenceName="Data.Table1" DataType="System.Int32" Enabled="true">
<Column Name="姓名" DataType="System.String" PropName="Column"/>
<Column Name="密碼" DataType="System.String" PropName="Column"/>
</TableDataSource>
</Dictionary>
5、編輯模板,添加一個Table控件。
第一行直接雙擊輸入文本;
第二行直接將右邊的數據源托到單元格中;
設置邊框、字體。
6、
添加事件后台方法
如下圖,選中Table1,在事件ManualBuild的后面雙擊,添加下面的代碼:
// 控件Table1的構建事件
private void Table1_ManualBuild(object sender, EventArgs e)
{
DataSourceBase data1 = Report.GetDataSource("Table1"); // 獲取DataSet中表名為Table1的數據源
data1.Init(); // 初始化
Table1.PrintRow(0); // 控件Table1打印第0行
Table1.PrintColumns(); // 每打印一行,都要調用 PrintColumn或PrintColumns
while(data1.HasMoreRows) // 打印重復循環的行
{
Table1.PrintRow(1);
Table1.PrintColumns();
data1.Next(); // 讀取下一行
}
}
說明:
(1) Table控件是從第0行開始的。
(2) 綁定數據的重復行,算作一行。
(3) 輸出行之前,要先調用Init() 方法,當有兩個數據源,比如data1和data2,data1又是data2的父數據源,需要把data1當做參數,如 data2.Init(data1);
(4) 每打印一行,都要調用 PrintColumn或PrintColumns
部分winform調用代碼:
/// <summary> /// 報表 /// </summary> private FastReport.Report FReport; /// <summary> /// 數據源 /// </summary> private DataSet FDataSet; /// <summary> /// 模板地址 /// </summary> private string _reportFolder = Application.StartupPath + "\\ReportMd\\"; FReport = new FastReport.Report(); FReport.Preview = preview1;//preview1是private FastReport.Preview.PreviewControl preview1; string reportName = _reportFolder + "rpBalance.frx"; string sql = "SELECT a,b,c FROM table"; FDataSet = DBUtility.DbHelperSQL.Query(sql); FDataSet.Tables[0].TableName = "Table1";//數據源名稱 FReport.Load(reportName); FReport.RegisterData(FDataSet); FReport.Parameters[0].Value = FDataSet.Tables[0].Rows.Count.ToString();//參數 FReport.Prepare(); FReport.ShowPrepared();