C# Code:

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 数据邦定的更多相关文章

  1. [WPF系列]-数据邦定之DataTemplate 根据对象属性切换模板

      引言 书接上回[WPF系列-数据邦定之DataTemplate],本篇介绍如何根据属性切换模板(DataTemplate)   切换模板的两种方式:   使用DataTemplateSelecto ...

  2. ASP.NET中数据邦定效率问题的一点看法 - 转载(自由的天空)

    在 做Asp.NET开发的时候经常用到DataList.Repeater等,用这些控件的时候经常用到数据邦定,很多程序员都是按照MS提供的方 法<%#DataBinder.Eval(Contai ...

  3. [WPF系列]-数据邦定之DataTemplate 对分层数据的支持

    到目前为止,我们仅讨论如何绑定和显示单个集合. 某些时候,您要绑定的集合包含其他集合. HierarchicalDataTemplate 类专用于 HeaderedItemsControl 类型以显示 ...

  4. [WPF系列]-数据邦定之DataTemplate 使用 DataTrigger 来应用属性值

    使用 DataTrigger 来应用属性值 当前表示不会告诉我们某个 Task 是家庭任务还是办公室任务.记住 Task 对象拥有类型为 TaskType 的 TaskType 属性,该类型是一个枚举 ...

  5. [WPF系列]-数据邦定之DataTemplate简介

    引言 WPF 数据模板化模型为定义数据的表示形式提供了很大的灵活性.WPF 控件有支持自定义数据表示形式的内置功能.首先介绍下如何定义Datatemplate,然后再介绍其他数据模板化功能,例如根据自 ...

  6. [WPF系列]-数据邦定之DataTemplate 对 ItemsControl 进行样式和模板处理

    引言   即使 ItemsControl 不是 DataTemplate 所用于的唯一控件类型,将 ItemsControl 绑定到集合仍然很常见. 在 DataTemplate 中有哪些内容一节中, ...

  7. ServerSocket 默认邦定IP

    转自:http://cuisuqiang.iteye.com/blog/2037769 开发中需要开启服务端的时候,本地测试都是直接写端口,实际环境也是需要指定要邦定的IP才可以. 因为对于服务器来说 ...

  8. vue+mock.js+element-ui模拟数据搞定分页

    效果如图: 前提是搭好vue前端框架,npm install mockjs引入mock.js 当前页全部代码如下,其他有关element-ui的引入未提到,仅作参考用 <!-- 用户管理 --& ...

  9. excel表数据生成定长txt数据

    项目作业中需要造数据,从txt文件中获取定长数据,直接从txt中修改,会显得十分麻烦,于是便利用excel自带的vba写了一个小工具.效果如下: A1表示字段名,A2表示长度,A3是数据,也可以增加字 ...

随机推荐

  1. c# 修改appConfig文件节点

    配置文件对于程序的帮助是不可小视的,尤其是java工程师们,当然了,我这里说的是c#的配置文件.废话不多说了,直接上代码了,想必大家一看就会明白了 private string UpdateConfi ...

  2. JQuery开发之Galleriffic图片插件介绍

    Galleriffic是一个用于创建快速展示相册中照片的jQuery插件.从图一中可以看成,图片既可以以幻灯片的方式查看,也可以手动点击缩略图查看.Galleriffic还支持分页,从而使得它能够展示 ...

  3. ubuntu 切换工作区域

    在Ubuntu 13.04中,默认是不激活多桌面工作空间的,所以在之前的版本可以在启动器看到的那个像“田”字的“工作区切换器”图标没有了,始终只有一个桌面了.要激活工作空间,在system setti ...

  4. struts 中 s:iterator 使用注意事项

    后台定义类 public class Course_pj { private String _id; private String _courseid; private String _course_ ...

  5. sqlite3使用简介(内含解决sqlite内存的方法)

    一.使用流程 要使用sqlite,需要从sqlite官网下载到三个文件,分别为sqlite3.lib,sqlite3.dll,sqlite3.h,然后再在自己的工程中配置好头文件和库文件,同时将dll ...

  6. android面试题(转)

    1. Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚 ...

  7. 解决 winform 界面对不齐 z

    一个winform的程序,本机上界面对得很齐,到一到客户的机器上就惨不忍睹,一番研究后搞定: 1. AutoScaleMode = None 2. BackgroundImageLayout = No ...

  8. [搜片神器]之DHT网络爬虫的C++程序初步开源

    回应大家的要求,特地整理了一开始自己整合的代码,这样最简单,最直接的可以分析流程,至于文章里面提供的程序界面更多,需要大家自己开发. 谢谢园子朋友的支持,已经找到个VPS进行测试,国外的服务器: ht ...

  9. size_type、size_t、differentce_type以及ptrdiff_t

      目录(?)[-] size_type size_t different_type ptrdiff_t size_t是unsigned类型,用于指明数组长度或下标,它必须是一个正数,std::siz ...

  10. bjfu1281

    思路挺简单的,但因为需要处理大数,所以就比较耗代码了. /* * Author : ben */ #include <cstdio> #include <cstdlib> #i ...