FastReport.Net中使用列表和数组作为报表数据源
大多数现代报告工具允许您使用几乎任何数据库,然而,并不是所有报表工具都能以一个数据源的列表或数组来工作。本文中将展示如何使用FastReport .Net报表工具来实现。
请注意以下重要几点:
清单中的对象字段应该被描述为在报表中可见的公共属性;
除列表外你可以从任何IEnumerable集中提交你的报表数据;
在报表中转移LINQ查询结果你需要使用ToArray方法转换列表。
创建窗体应用程序。
在报表中给出类别列表,对于每个类别将增加产品列表。
声明变量:
private List<category> FBusinessObject;
private Report FReport;</category>
顾名思义,它是一个类别列表和报表对象。
所以,添加一个类的产品:
public class Product
{
private string FName;
private decimal FUnitPrice;
public string Name
{
get { return FName; }
}
public decimal UnitPrice
{
get { return FUnitPrice; }
}
public Product(string name, decimal unitPrice)
{
FName = name;
FUnitPrice = unitPrice;
}
}
正如你所见,给对象的字段声明是公共的。
现在添加类的类别:
public class Category
{
private string FName;
private string FDescription;
private List<product> FProducts;
public string Name
{
get { return FName; }
}
public string Description
{
get { return FDescription; }
}
public List<product> Products
{
get { return FProducts; }
}
public Category(string name, string description)
{
FName = name;
FDescription = description;
FProducts = new List<product>();
}
}</product></product></product>
对象类别的字段之一是一个产品列表,也就是说,一个类别的列表是队列的一个数组。
创建数据源:
public void CreateDataSource()
{
FBusinessObject = new List<category>(); //Create list of categories
Category category = new Category("Beverages", "Soft drinks, coffees, teas, beers"); //Create new instance of category
category.Products.Add(new Product("Chai", 18m)); //Add new product to category
category.Products.Add(new Product("Chang", 19m));
category.Products.Add(new Product("Ipoh coffee", 46m));
FBusinessObject.Add(category); //Add the category to the List
category = new Category("Confections", "Desserts, candies, and sweet breads");
category.Products.Add(new Product("Chocolade", 12.75m));
category.Products.Add(new Product("Scottish Longbreads", 12.5m));
category.Products.Add(new Product("Tarte au sucre", 49.3m));
FBusinessObject.Add(category);
category = new Category("Seafood", "Seaweed and fish");
category.Products.Add(new Product("Boston Crab Meat", 18.4m));
category.Products.Add(new Product("Red caviar", 15m));
FBusinessObject.Add(category);
}</category>
从注释中显而易见,创建了一个对象类别列表。然后创建一个新的类别,并将所需数量的产品添加进去,在类别列表中添加类别。再添加上几类产品。
数据源已经创建,现在你需要在RegisterData方法的帮助下注册报表:
public void RegisterData()
{
FReport.RegisterData(FBusinessObject, "Categories");
}
此方法显示报表中列表名为“Categories”。
在设计器重添加方法运行报表:
public void DesignReport()
{
FReport = new Report();
CreateDataSource();
RegisterData();
FReport.Design();
}
在这里,我们创建了一个报表对象和数据源的实例。我们还注册了数据源,并在设计器中打开报表。
添加一个按钮方法来调用报表设计器:
public void button1_Click(object sender, EventArgs e)
{
DesignReport();
}
在报表设计器中,需要在菜单数据中选择数据源→选择报表数据…
创建一个简单的Master-Detail类型报表:
在预览模式下运行报表:
综上所诉:FastReport .NET再次证明是一个灵活的,现代化产品,您可以在您的应用程序中使用必要的数据而不必将它们转换成数据表。
FastReport.Net中使用列表和数组作为报表数据源的更多相关文章
- Perl的列表和数组
列表和数组 列表 使用括号包围的元素,括号中的元素使用逗号隔开的是列表. 列表中的元素可以是字符串.数值.undef或它们的混合. 列表中的字符串元素需要使用引号包围. 空列表是括号中什么都没有的列表 ...
- 对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
引用:https://www.jb51.net/article/142775.htm 列表赋值: 1 2 3 4 5 6 7 >>> a = [1, 2, 3] >>&g ...
- julia与python中的列表解析.jl
julia与python中的列表解析.jl #=julia与python中的列表解析.jl 2016年3月16日 07:30:47 codegay julia是一门很年轻的科学计算语言 julia文档 ...
- Java中迭代列表中数据时几种循环写法的效率比较
Java中经常会用到迭代列表数据的情况,本文针对几种常用的写法进行效率比较.虽然网上已经有了类似的文章,但是对他们的结论并不认同. 常见的实现方法: 1.for循环: for(int i = 0; i ...
- Python学习笔记整理(五)Python中的列表.
列表和字段,这两种类型几乎是Python所有脚本的主要工作组件.他们都可以在原处进行修改,可以按需求增加或缩短,而且包含任何种类的对象或者被嵌套. 一.列表 列表的主要属性: *任意对象的有序集合 从 ...
- perl5 第四章 列表和数组变量
第四章 列表和数组变量 by flamephoenix 一.列表二.数组--列表的存贮 1.数组的存取 2.字符串中的方括号和变量替换 3.列表范围 4.数组的输出 5.列表/数组的长度 ...
- C语言中的函数、数组与指针
1.函数:当程序很小的时候,我们可以使用一个main函数就能搞定,但当程序变大的时候,就超出了人的大脑承受范围,逻辑不清了,这时候就需要把一个大程序分成许多小的模块来组织,于是就出现了函数概念: 函 ...
- Python中关于列表嵌套列表的处理
在处理列表的时候我们经常会遇到列表中嵌套列表的结构,如果我们要把所有元素放入一个新列表,或者要计算所有元素的个数的话应该怎么做呢? 第一个例子 对于上图中的这样一组数据,如果我们要知道这个CSV文件中 ...
- 剑指Offer 1. 二维数组中的查找 (数组)
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
随机推荐
- RMI 使用笔记
Java 远程方法调用,即 Java RMI( Java Remote Method Invocation ) .顾名思义,可以使客户机上运行的程序能够调用远程服务器上的对象(方法). 下面主要介绍一 ...
- 微信小程序mpvue-动态改变navigationBarTitleText值
通过JS动态 改变navigationBarTitleText的值 能否通过JS动态改变navigationBarTitleText的值? 方法一:可以在onLoad方法中通过wx.setNaviga ...
- 01 微信小程序创建组件和使用组件
01 创建组件 遇见的困难 图标显示不出来,是因为你没有在组件的css中引入,所以显示不出来. 我一直以为是一个坑.结果是自己没有整清楚 01==>在page的同级目录下,创建一个文件夹,命名为 ...
- PHP如何配置session存储在redis
当网站用户量增多的时候,正常的session存取就会出现有点慢的问题,如果提高速度呢. 我们可以使用redis去保存session的会话信息. PHP的会话默认是以文件的形式存在的,可以配置到NoSQ ...
- [ddt02篇]十年测试老鸟帮您解析:ddt结合txt,excel,csv,mysql实现自动化测试数据驱动
一.前言: 阅读此文之前请先阅读: [ddt01篇]十年测试老鸟帮您解析:ddt数据驱动入门基础应用:https://www.cnblogs.com/csmashang/p/12679448.html ...
- YII基础
一.目录结构 应用中最重要的目录和文件(假设应用根目录是 basic): basic/ 应用根目录 composer.json Composer 配置文件, 描述包信息 config/ 包含应用配置及 ...
- H5 环境检测
检测是否在客户端App内 function is_app() { var userAgent = navigator.userAgent.toLowerCase();//获取UA信息 if (user ...
- EL表达式---自定义函数(转)
EL表达式---自定义函数(转) 有看到一个有趣的应用了,转下来,呵呵!! 1.定义类MyFunction(注意:方法必须为 public static) package com.tgb.jstl; ...
- 小小的锁,大大的疑问?Lock疑问?
Lock锁 怎么使用?怎么把下面的这个锁弄得比较合适,大家都能去买票?? 和synchronized相比的好处? lock的使用规范try finnally private final Reentra ...
- (一) Mybatis源码分析-解析器模块
Mybatis源码分析-解析器模块 原创-转载请说明出处 1. 解析器模块的作用 对XPath进行封装,为mybatis-config.xml配置文件以及映射文件提供支持 为处理动态 SQL 语句中的 ...