FastReport使用DataSet作數據源


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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM