FastReport使用DataSet作数据源

1、打开FastReport的设计器,

2、选择【File】-》【New】 新建FastReport模板。

3、选择【View】-》【Data】,显示如下,导出Dictionary,保存。

FastReport使用DataSet作数据源

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

FastReport使用DataSet作数据源

部分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[].TableName = "Table1";//数据源名称
FReport.Load(reportName);
FReport.RegisterData(FDataSet);
FReport.Parameters[].Value = FDataSet.Tables[].Rows.Count.ToString();//参数
FReport.Prepare();
FReport.ShowPrepared();
上一篇:[转]Java7中的ForkJoin并发框架初探(中)——JDK中实现简要分析


下一篇:使用detours实现劫持