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[].TableName = "Table1";//数据源名称
FReport.Load(reportName);
FReport.RegisterData(FDataSet);
FReport.Parameters[].Value = FDataSet.Tables[].Rows.Count.ToString();//参数
FReport.Prepare();
FReport.ShowPrepared();
FastReport使用DataSet作数据源的更多相关文章
- 用dataset做数据源时,让gridview显示的列名与数据库表中的字段名不同
原文发布时间为:2008-10-27 -- 来源于本人的百度文章 [由搬家工具导入] 确定GridView的AutoGenerateColumns设置为False;使用GridView的“编辑列”,添 ...
- FastReport报表设计(仔细看)
FastReport报表设计 2011-06-16 16:56:19| 分类: 系统开发|举报|字号 订阅 下载LOFTER我的照片书 | 目录 5.1 前言 5.2 基本概念及操 ...
- FastReport报表设计
[转载]FastReport报表设计 (2012-10-24 20:37:26) 转载▼ 标签: 转载 原文地址:FastReport报表设计作者:小黑 FastReport报表设计 目录 5.1 ...
- C# 导入Excel到DataSet中
class Import { /// <summary> /// 导入Excel到DataSet中 /// </summary> /// <param name=&quo ...
- ADO.NET基础知识学习(SQLCOnnection&SQLCommand&SQLDataReader&SQLDataAdapter&DataSet)
通过ADO.NET技术,我们可以高效的完成客户端同数据库之间的数据访问操作,便于我们在客户端程序简便高效的访问以及获取数据库中的有用数据,同时也可以对数据库中的数据进行更新,即可以完成客户端与数据库之 ...
- 导入本地Excel到DataSet中
/// <summary> /// 导入本地Excel到DataSet中 /// </summary> /// <param name="strFileSour ...
- springboot2多数据源完整示例
springboot2 + mybatis + mysql + oracle + sqlserver多数据源的配置 相信很多朋友在开发的时候,可能会碰到需要一个项目,配置多个数据源的需求,可能是同一种 ...
- Binding笔记
Binding基础 绑定某个对象的属性值到控制上,写法如下: public class Order : INotifyPropertyChanged//只要实现此接口 { public event ...
- Binding
Binding基础 绑定某个对象的属性值到控制上,写法如下: public class Order : INotifyPropertyChanged//只要实现此接口 { public event ...
随机推荐
- JSON例子异常分析
今天自己写了一个JSON的例子,可以一调用就出了问题,报下面这个异常: Java.lang.ClassNotFoundException: org.apache.commons.lang.except ...
- imx6 关闭调试串口
需要关闭imx6调试串口,用作普通的串口使用. 参考链接 http://blog.csdn.net/neiloid/article/details/7585876 http://www.cnblogs ...
- http-code 未译
1xx Informational Request received, continuing process. This class of status code indicates a provis ...
- iOS获取当前AppStore版本号与更新
- (void)checkUpdateWithAppID:(NSString *)appID success:(void (^)(NSDictionary *resultDic , BOOL isNe ...
- jsp+servlet 中文乱码问题
一. 由于doget和dopost的处理方式不同,在做servlet的时候遇到这样一个问题:用doPost获得的参数只要加上“request.setCharacterEncoding("ut ...
- 夺命雷公狗----Git---3---vi编辑器
如果直接使用了 git commit 即进入vi编辑器,所以强烈推荐使用 git commit -m 中文注释 但是如果进入vi编辑器其实也没什么好怕的,如果动linux 的朋友应该都会使用 进入v ...
- CDC的StretchBlt函数载入位图时图片失真问题
最近遇到加载的bmp图片出现失真问题,查找得知需要用SetStretchBltMode函数设置拉伸模式. 函数原型:int SetSTretchBltMode(HDC hdc, int iStretc ...
- 【实践】js实现简易的四则运算计算器
最近看了一个大神推荐的某公司面试程序员的js 面试题,题目是用js 做一个计算器于是跟着大神的思想自己做了一下 ps:功能还没有完善好毕竟自己还是一只菜鸟还在不断学习中. 闲话不多说先上css代码 & ...
- TCP/IP协议与UDP协议的区别
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接.一个TCP连接必须要经过三次“对话”才能建立起来, ...
- linux shell脚本使用结构化命令(2)
一.for命令 二.while命令 三.until命令 1.for命令基本格式 for var in list do commands done oracle@suse:~/testshell> ...