博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 报表练习笔记
阅读量:6269 次
发布时间:2019-06-22

本文共 2446 字,大约阅读时间需要 8 分钟。

报表数据来自数据库

A-1.创建DataSet。选择“服务器资源管理器”下的数据连接,选择数据库的某个表,拖到xsd的面板中。

A-2.添加报表。“报表数据”,“新建数据集...”。“对象”,选择刚才生成的DataSet。可以看到数据集中出现刚才的表格。最上面填充数据集名称,这个名称下面会用到,所以尽量不随意命名。下面数据绑定的过程中可能会用。

A-3.添加完报表数据后,继续编辑报表。从工具箱中拖出“表”、“文本框”..等控件来设计报表的前台。

A-4.绑定数据。在输入框中右键,“表达式”,在=后面编写输入框要表现的信息。常用:="工程师:" & First(Field!Designer.Value, "Employees")。其中'&'连接两段独立的信息,"First"表示第一条数据,"Field!"说明哪个字段名称,"Employees"是表名。如果信息是一段固定的文字,可直接通过输入框输入。(此处没有理解表的组有什么作用)

A-5.完成以上步骤后,设计前台WinForm。新建一个WinForm,拖入控件"ReportViewer"。

A-6.进入后台,编写绑定数据函数。

DsDataBaseTableAdapters.AAA_0228TableAdapter AAA_0228TableAdapter =new DsDataBaseTableAdapters.AAA_0228TableAdapter();DsDataBase ds = new DsDataBase();AAA_0228TableAdapter.ClearBeforeFill = true;AAA_0228TableAdapter.Fill(ds.AAA_0228);ReportDataSource dataSource1 = new ReportDataSource("DataSet1", ds.Tables["AAA_0228"]);reportViewer1.LocalReport.DataSources.Add(dataSource1);reportViewer1.LocalReport.ReportEmbeddedResource = "ReportPractise.ReportDataBase.ReportDataBase.rdlc";

报表数据来自本地XML

B-1.创建DataSet。"工具箱","DataTable“,新增和编辑表的列。

B-2.A-1/A-2/A-3/A-4

B-3.创建一个XML文件,将其属性改为“复制到输出目录--始终复制”。并在xml中编写内容,内容与创建的DataSet的表结构一样。数据一一对应。最终会将xml的数据读取到DataSet的表中,通过前台呈现出来。

B-4.A-5/A-6。绑定数据的函数如下。

using (var ds = new DataSet()){    ds.ReadXml("ReportXML\\BasicInfo.xml");    ReportDataSource dataSource1 = new ReportDataSource("DataSet1", ds.Tables["BasicInfo"]);    reportViewer1.LocalReport.DataSources.Add(dataSource1);    reportViewer1.LocalReport.ReportEmbeddedResource = "ReportPractise.ReportXML.ReportXML.rdlc";}

数据集中有多个表格,也就是说报表数据来源自多个表格。

1.创建完DataSet后,在DataSet中创建多个DataTable。可以是数据库也可以是自定义。以自定义为例。

2.创建报表。在报表的报表数据中添加数据集,多次添加,将最终需要获取表现出来的DataTable全部添加到数据集中。

3.编辑完报表之后,创建XML数据。同样需要构造所有的表格数据。

4.界面绑定数据的函数如下:

using (var ds = new DataSet()){    ds.ReadXml("ReportMultiTable\\TestResult.xml");    ReportDataSource dataSource1 = new ReportDataSource("dsMain", ds.Tables["Main"]);    ReportDataSource dataSource2 = new ReportDataSource("dsDetail", ds.Tables["Detail"]);    reportViewer1.LocalReport.DataSources.Add(dataSource1);    reportViewer1.LocalReport.DataSources.Add(dataSource2);    reportViewer1.LocalReport.ReportEmbeddedResource = "ReportPractise.ReportMultiTable.ReportMultiTable.rdlc";}

遗留问题:编辑rdlc报表的过程中,“分组”是什么意思?reportViewer可以设置绑定报表,为什么有的时候绑定完了之后会自动生成Adapter.fill,而有时候又不行呢?同样的数据,同样的操作,在两个解决方案中打开,一个会自动在Load里面生成Fill(),同时自动添加DataSet,Adapter,BindingData,另一个只生成了BindingData......

转载于:https://www.cnblogs.com/icyJ/archive/2013/03/11/ReportViewer.html

你可能感兴趣的文章
Flume负载均衡配置
查看>>
Ajax详解
查看>>
Ubuntu C/C++开发环境的安装和配置
查看>>
百世汇通快递地区选择插件,单独剥离
查看>>
Linux系统调用---同步IO: sync、fsync与fdatasync【转】
查看>>
【MyBatis学习06】输入映射和输出映射
查看>>
[LeetCode] Decode String 解码字符串
查看>>
数字逻辑的一些基本运算和概念
查看>>
ant重新编译打包hadoop-core-1.2.1.jar时遇到的错
查看>>
【★★★★★】提高PHP代码质量的36个技巧
查看>>
3 weekend110的配置hadoop(格式化) + 一些问题解决 + 未免密码配置
查看>>
JavaScript Creating 对象
查看>>
Java compiler level does not match the version of the installed Java project facet.(转)
查看>>
WPF MediaElement.Position属性
查看>>
sqoop数据迁移(基于Hadoop和关系数据库服务器之间传送数据)
查看>>
spring mysql多数据源配置
查看>>
[React] Override webpack config for create-react-app without ejection
查看>>
检索 COM 类工厂中 CLSID 为{00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。...
查看>>
测试java的父子类化
查看>>
HDOJ 1008
查看>>