private void button4_Click(object sender, EventArgs e)
{
//打印主从表数据
string file = Application.StartupPath @"\MasterDetail.frx";
rptMasterDetail.Load(file);//加载报表模板文件
DataSet ds = DAL.GetMasterDetailData();//取报表数据
rptMasterDetail.RegisterData(ds.Tables[0], "tb_SO"); //注册数据源,主表
rptMasterDetail.RegisterData(ds.Tables[1], "tb_SOs"); //注册数据源,从表
//
//直接注册DataSet也行,但必须对DataSet.Tables指定表名!
//FastReport是跟据表名取DataTable对象的。
//
//rptMasterDetail.RegisterData(ds);
//
//给DataBand(主表数据)绑定数据源
DataBand masterBand = rptMasterDetail.FindObject("Data1") as DataBand;
masterBand.DataSource = rptMasterDetail.GetDataSource("tb_SO"); //主表
//给DataBand(明细数据)绑定数据源
DataBand detailBand = rptMasterDetail.FindObject("Data2") as DataBand;
detailBand.DataSource = rptMasterDetail.GetDataSource("tb_SOs"); //明细表
//重要!!给明细表设置主外键关系!
detailBand.Relation = new Relation();
detailBand.Relation.ParentColumns = new string[] { "SONO" };
detailBand.Relation.ParentDataSource = rptMasterDetail.GetDataSource("tb_SO"); //主表
detailBand.Relation.ChildColumns = new string[] { "SONO" };
detailBand.Relation.ChildDataSource = rptMasterDetail.GetDataSource("tb_SOs"); //明细表
//准备工作,显示报表预览窗体
rptMasterDetail.Prepare();
rptMasterDetail.ShowPrepared(true, this);
}
具体步骤:
1. 加载报表模板文件,Load()。
2. 通过DAL层获取报表数据,返回DataSet类型,包含两张数据表(主表tb_SO, 明细表tb_SOs)。
3. RegisterData,注册数据源。(重要)
4. 给DataBand对象绑定数据源,名为Data1绑定主表,Data2绑定明细表。(重要)
5. 给明细表DataBand设置主外键关系。 (重要)
6. 准备报表,显示预览窗体。
fastreport for .net 数据邦定的更多相关文章
-
[WPF系列]-数据邦定之DataTemplate 根据对象属性切换模板
引言 书接上回[WPF系列-数据邦定之DataTemplate],本篇介绍如何根据属性切换模板(DataTemplate) 切换模板的两种方式: 使用DataTemplateSelecto ...
-
ASP.NET中数据邦定效率问题的一点看法 - 转载(*的天空)
在 做Asp.NET开发的时候经常用到DataList.Repeater等,用这些控件的时候经常用到数据邦定,很多程序员都是按照MS提供的方 法<%#DataBinder.Eval(Contai ...
-
[WPF系列]-数据邦定之DataTemplate 对分层数据的支持
到目前为止,我们仅讨论如何绑定和显示单个集合. 某些时候,您要绑定的集合包含其他集合. HierarchicalDataTemplate 类专用于 HeaderedItemsControl 类型以显示 ...
-
[WPF系列]-数据邦定之DataTemplate 使用 DataTrigger 来应用属性值
使用 DataTrigger 来应用属性值 当前表示不会告诉我们某个 Task 是家庭任务还是办公室任务.记住 Task 对象拥有类型为 TaskType 的 TaskType 属性,该类型是一个枚举 ...
-
[WPF系列]-数据邦定之DataTemplate简介
引言 WPF 数据模板化模型为定义数据的表示形式提供了很大的灵活性.WPF 控件有支持自定义数据表示形式的内置功能.首先介绍下如何定义Datatemplate,然后再介绍其他数据模板化功能,例如根据自 ...
-
[WPF系列]-数据邦定之DataTemplate 对 ItemsControl 进行样式和模板处理
引言 即使 ItemsControl 不是 DataTemplate 所用于的唯一控件类型,将 ItemsControl 绑定到集合仍然很常见. 在 DataTemplate 中有哪些内容一节中, ...
-
ServerSocket 默认邦定IP
转自:http://cuisuqiang.iteye.com/blog/2037769 开发中需要开启服务端的时候,本地测试都是直接写端口,实际环境也是需要指定要邦定的IP才可以. 因为对于服务器来说 ...
-
vue+mock.js+element-ui模拟数据搞定分页
效果如图: 前提是搭好vue前端框架,npm install mockjs引入mock.js 当前页全部代码如下,其他有关element-ui的引入未提到,仅作参考用 <!-- 用户管理 --& ...
-
excel表数据生成定长txt数据
项目作业中需要造数据,从txt文件中获取定长数据,直接从txt中修改,会显得十分麻烦,于是便利用excel自带的vba写了一个小工具.效果如下: A1表示字段名,A2表示长度,A3是数据,也可以增加字 ...
随机推荐
-
Git Bash的一些命令和配置
查看git版本号: git --version 如果是第一次使用Git,你需要设置署名和邮箱: $ git config --global user.name "用户名" $ gi ...
-
iOS开发之ReactiveCocoa下的MVVM(干货分享)
最近工作比较忙,但还是出来更新博客了,今天给大家分享一些ReactiveCocoa以及MVVM的一些东西,干活还是比较足的.在之前发表过一篇博文,名字叫做<iOS开发之浅谈MVVM的架构设计与团 ...
-
js常见执行方法$(document).load(),$(document).ready()
$(document).load(); 当web页面以及其附带的资源文件,如CSS,Scripts,图片等,加载完毕后执行此方法.常用于检测页面(及其附带资源)是否加载完毕. $(document). ...
-
cocos2d-x 基本数学
转自:http://cjhworld.blog.163.com/blog/static/207078036201331510141222/ 数学函数: ccp(x, y); // 以坐标x,y创建一个 ...
-
PHP 201307 月最新手册chm 免费下载
本次更新两个版本 php_manual_zh_notreview.chm (15MB 不带评论) php_manual_zh_review.chm (32MB 带评论) 制作方 ...
-
数组初始化(c, c++, gcc, g++)
这是很基础的东西,但基础的重要性不言而喻,我敢肯定这个知识点我肯定曾经了解过,但现在,我不敢确定,由此可见纪录的重要性,这世界没有什么捷径,找对方向,然后不停重复.所以从今天开始,我会比较详细的纪录这 ...
-
NodeJS常用模块介绍
收集了NodeJS开发中常用的一些模块. MVC框架 - Express Express 是轻量灵活的Nodejs Web应用框架,它可以快速地搭建网站.Express框架建立在Nodejs内置的Ht ...
-
prometeus, grafana部署以及监控mysql
什么是普罗米修斯? Prometheus是一个最初在SoundCloud上构建的开源系统监视和警报工具包 .自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有一个非常活跃的开 ...
-
tomcat支持 https
首先 安装nginx ,在nginx.conf 中引入 include /app/conf/nginx/vhosts/*.conf; 配置 并在conf/vhosts 目录 中配置virtual.c ...
- eclipse中设置字体为VC经典字体Fixedsys