大多数现代报告工具允许您使用几乎任何数据库,然而,并不是所有报表工具都能以一个数据源的列表或数组来工作。本文中将展示如何使用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中使用列表和数组作为报表数据源的更多相关文章

  1. Perl的列表和数组

    列表和数组 列表 使用括号包围的元素,括号中的元素使用逗号隔开的是列表. 列表中的元素可以是字符串.数值.undef或它们的混合. 列表中的字符串元素需要使用引号包围. 空列表是括号中什么都没有的列表 ...

  2. 对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解

    引用:https://www.jb51.net/article/142775.htm 列表赋值: 1 2 3 4 5 6 7 >>> a = [1, 2, 3] >>&g ...

  3. julia与python中的列表解析.jl

    julia与python中的列表解析.jl #=julia与python中的列表解析.jl 2016年3月16日 07:30:47 codegay julia是一门很年轻的科学计算语言 julia文档 ...

  4. Java中迭代列表中数据时几种循环写法的效率比较

    Java中经常会用到迭代列表数据的情况,本文针对几种常用的写法进行效率比较.虽然网上已经有了类似的文章,但是对他们的结论并不认同. 常见的实现方法: 1.for循环: for(int i = 0; i ...

  5. Python学习笔记整理(五)Python中的列表.

    列表和字段,这两种类型几乎是Python所有脚本的主要工作组件.他们都可以在原处进行修改,可以按需求增加或缩短,而且包含任何种类的对象或者被嵌套. 一.列表 列表的主要属性: *任意对象的有序集合 从 ...

  6. perl5 第四章 列表和数组变量

    第四章 列表和数组变量 by flamephoenix 一.列表二.数组--列表的存贮  1.数组的存取  2.字符串中的方括号和变量替换   3.列表范围  4.数组的输出  5.列表/数组的长度  ...

  7. C语言中的函数、数组与指针

    1.函数:当程序很小的时候,我们可以使用一个main函数就能搞定,但当程序变大的时候,就超出了人的大脑承受范围,逻辑不清了,这时候就需要把一个大程序分成许多小的模块来组织,于是就出现了函数概念:  函 ...

  8. Python中关于列表嵌套列表的处理

    在处理列表的时候我们经常会遇到列表中嵌套列表的结构,如果我们要把所有元素放入一个新列表,或者要计算所有元素的个数的话应该怎么做呢? 第一个例子 对于上图中的这样一组数据,如果我们要知道这个CSV文件中 ...

  9. 剑指Offer 1. 二维数组中的查找 (数组)

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

随机推荐

  1. DVWA系列精品教程:2、命令注入

    文章更新于:2020-04-11 注:如何搭建环境参见:搭建DVWA Web渗透测试靶场 DVWA之命令注入漏洞 一.介绍 1.1.官方说明 1.2.总结 二.命令注入实践 2.1.安全级别:LOW ...

  2. python通过pymysql实现数据库的增删改查

    今天实现了python对于数据库的增删改查工作: 具体的每一步的数据库的增删盖茶自己都实验过了. 掌握了基本的数据库操作语言.然后就是对于tuple()的认识. 以及对于查询语句中的:fetchone ...

  3. ubuntu上安装redis和配置远程访问

    ubuntu上安装redis和配置远程访问 安装redis: 下载安装包: wget http://download.redis.io/releases/redis-4.0.1.tar.gz 解压: ...

  4. cookie、session、csrf

    cookie的设置和获取 import time from tornado.web import RequestHandler class IndexHandle(RequestHandler): d ...

  5. "Tag标签"组件:<tags> —— 快应用组件库H-UI

     <import name="tags" src="../Common/ui/h-ui/text/c_tags"></import> ...

  6. SVG案例:动态去创建元素createElementNS

    案例一: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...

  7. python高级特性之封包与解包

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:kwsy PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...

  8. sprint3总结 && sprint4计划

    sprint3总结 在一周时间里,逻辑部分顺利的将数据库,查词,UI部分连接到一起.并且各部分也针对新的要求做出了一些修改,目前数据库和查词alpha版已经完成,UI部分还需要一些美化,逻辑部分也还需 ...

  9. jquary

    1   定义:    jquary是快速简介的Javascrīpt框架 2  分类 :          1)  .js类           源代码的未压缩的可以进行更改的jquary 2) min ...

  10. 详解 TreeMap

    (有关Map集合的基本性质,请观看本人博文-- <详解 Map集合>) TreeMap: 特点: TreeMap 键不允许插入null 键的底层数据结构是红黑树,可保证键的排序和唯一性 线 ...