(1)前言

使用了VS好多年,一直认为制作报表是件很头痛的事,不是自己没有研究过,但说真的的确是很头痛的事,尤其是C#下面的各种数据绑定,网上蜡人张的BLOG对RDLC就有很透彻的详细说明,我看了半天,就给那些报表结构回路搞得莫名其妙,大师级别的人果然功力与我不一样。因为项目的需要,这两天回炉一下自己从前的报表知识,顺便写篇东西,好让后来者别多太多像我一般的无谓脑力跟体力劳动。

本人是位明显的实用主义者,程序开发有太多的理论,量你一辈子的时间也绝对不可能全部了解清楚的,可当你实际操作过一个工程的话,有些理论或许会不言而喻,很多专家都说,RDLC是很容易上手的,个人实践证明,确实不难——只要你能硬着头皮撑过我这篇入门级别的教程就好了,进阶的时候就真别问我,我也是菜鸟。

(2)自定义数据集(DataSet)

网上挺多关于RDLC的例子其实都用了Northwind的那个例子,个人认为,只是报表练练手就要动用数据库好样的庞然大物显得有点过份,所以在本教程里我宁愿选择自定义的数据,代码填充数据的内容,作为一个简单的教程而言,单独的示例工程就能运行很重要,而且,不管是自定义的数据集还是取自SQLServer的数据集,在实际报表操作上没什么差别,个人认为自定义的数据集更灵活一点。

DataSet在VS上面的昵称是“数据集”,可能探讨过数据库的童鞋对这个的理解得比我要多,我的理解是比较像图形化的Struct集合体,可以更方便更灵活创建你所需要的数据结构体,接下来就依照这样定义好的结构生成一个实例(myDataSet),再填充你获得的数据,一但你的报表跟实例作了绑定,那样数据呈现就不需要我们多想了,微软会自动帮你做好的——这便是RDLC的整个开发思路而已,内容不多。

下面是实操部分,我的开发环境是VS2012,好像以前用VS2008也是差不多的样子。

1)新建一个VS2012的WinFrom工程项目,我的工程命名是“RdlcTest”;

2)在解决方案资源管理器中,右键工程,“添加”--“新建项”,选择“数据集(DataSet)”,工程便增加了一个MyDataSet.xsd的项,这个就是你自己定义的数据集啦;

3)双击MyDataSet.xsd,在图形界面下新建你自己的数据结构体,以下是我自己的例子,数据类型全部是String(右键打开列的属性可以设置),有什么意义你就自己猜吧;

(2)新建报表及关联数据集

1)在工程中添加一张报表(Report1.rdlc),我这里没用“报表向导”,新建好后双击打开,你会看到一个报表设计页面跟一个“报表数据”的窗口(话说VS2012查找窗口还是相当的方便的),在“报表窗口”里添加一个数据集,你会看到下面这个对话框,选好刚刚建好的DataSet后,点确定即可。

2)添加报表数据集后的“报表数据”窗体是这样一副模样:

3)在报表设计窗口新建一个表,我们一条数据是7条个变量,就建一个七列的表(添加列的操作不需要详解了吧),然后用鼠标将“报表数据”里的DataSet1下的项逐个拖到表头里去,会有下面的效果。

4)虽然新建好了表跟添加数据集,但现在因为还没填充数据,所以也不可能有东西出来,何况你报表的容器还没有弄好呢是吧。回顾一下上面的步骤,我们姑且可以这么理清一下思路:一张报表(RDLC)、一个与报表关联的数据集(DataSet)、N多数据的容器(表或文本框)构成一张报表的全部元素,ReportView只是用来装报表的容器而已。

(3)添加ReportViewer及关联报表

1)打开你工程的MainForm的设计窗体,从“工具箱”中将“ReportViewer”拖到你的MainForm里去,当你选择ReportViewer时,其右上角有个小三角形,点击一下,可以看到很多选项:

2)第一项选择报表,当然选刚刚你添加的“Report1.rdlc”,意思就是这个ReportViewer只显示Report1.rdlc这张表;第二项选择数据源,这里需要点思考,如下图所示,报表数据源“DataSet1”是刚刚在“报表数据”窗口添加的一个数据集,而数据源实例又是什么呢?我选了项目里的MyDataSet--TestRecord,于是在这个MainForm的窗体下面会自动生成一个myDataSet的数据集实例及testRecordBindingSource的绑定实例(同参考下图),我的想法是“DataSet1”像个接口,“myDataSet”则是已经实例化的变量,类似吧?至于“父容器停靠”的选项,个人建议还是选了吧,好看一点。

3)假如你myDataSet里面已经有内容的话,你可以生成看到以下的这副样子:

4)如何填充myDataSet的数据,参见下面MainForm的窗体代码,代码应该是不难理解的,重要的是我想数据多样化一点,方便进行下一步的报表呈现讲解,示例工程我放到51CTO下载里了,编译环境是VS2012,下载地址是http://down.51cto.com/data/898719,下面博文的上传机制貌似有问题,有兴趣的朋友可以随便看看,高手莫拍。using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace RdlcTest

{

public partial class MainFrom : Form

{

public MainFrom()

{

InitializeComponent();

}

///

/// 加载窗体

///

///

///

private void Form1_Load(object sender, EventArgs e)

{

//更新数据集的内容

this.UpdateDataSet();

//刷新报表

this.reportViewer1.RefreshReport();

}

///

/// 为myDataSet手动添加数据

///

private void UpdateDataSet()

{

for (int i = 0; i < 5; i++)

{

string id = DateTime.Now.ToString() + "-" + i.ToString("D2");

for (int j = 0; j < 4; j++)

{

this.myDataSet.TestRecord.AddTestRecordRow(id, "001", "shengqin", "Man", "Change Road", DateTime.Now, "describe : " + i.ToString("D3"));

}

}

for (int j = 0; j < 4; j++)

{

this.myDataSet.TestRecord.AddTestRecordRow(DateTime.Now.ToString() + "-10", "002", "Joey", "Man", "Testing Speed", DateTime.Now, "describe : Joey's testing.");

}

for (int j = 0; j < 4; j++)

{

this.myDataSet.TestRecord.AddTestRecordRow(DateTime.Now.ToString() + "-11", "003", "Lily", "Woman", "Testing Speed", DateTime.Now, "describe : Lily's testing.");

}

for (int i = 20; i < 25; i++)

{

string id = DateTime.Now.ToString() + "-" + i.ToString("D2");

for (int j = 0; j < 4; j++)

{

this.myDataSet.TestRecord.AddTestRecordRow(id, "001", "shengqin", "Man", "Testing Speed", DateTime.Now, "describe : " + i.ToString("D3"));

}

}

}

}

}

rdlc怎么添加dataset_自定义数据的RDLC报表开发入门(一)相关推荐

  1. 你的报表工具会做数据准备吗 ——报表开发中的深层次问题

    前言 现在企业的报表开发大部分都使用报表工具完成,成熟的报表工具提供了丰富的显示设置.图表类型.导出打印等功能可以简化报表开发,非常方便.但在实际报表开发中还是经常碰到一些非常棘手的深层次问题,即使是 ...

  2. 从数据平台到报表开发,我靠这个零代码报表工具,转行后月薪3W

    偶尔会跟大数据这行里的朋友聊天,先说一个我听到的故事:有一京东的哥们,在那工作三年了,大数据平台岗.数仓搭好了之后,天天就是写SQL,一个月28k. 在京东待两年,那业务和调优的手法,再熟悉不过了,就 ...

  3. etabs数据_ETABS二次开发入门(一)——简介

    ETABS是一款常用的结构设计软件,能够实现快速建模.分析等功能.这里以ETABS 2015为例,阐述利用ETABS API进行二次开发的方法. 文章的主要参考文献为ETASB自带的CSi API E ...

  4. birt报表数据只有一条_这个低代码报表开发平台,操作类似Excel,用好了不需要加班...

    现在低代码开发平台很火,能够通过零代码或少量代码就可以快速创建应用. 但是从实践结果来看,完全的零代码开发应用是不可能的,机器替代人类智慧还需要很长的路要走.但是介于两者之间的低代码模式开发应用是值得 ...

  5. R语言ggplot2可视化散点图、可视化两个数值变量之间的关系、使用geom_smooth函数基于loess方法拟合数据点之间的趋势关系曲线、自定义数据点的大小、色彩、添加主标题、副标题、题注信息

    R语言ggplot2可视化散点图.可视化两个数值变量之间的关系(Scatter plot).使用geom_smooth函数基于loess方法拟合数据点之间的趋势关系曲线.自定义数据点的大小.色彩.添加 ...

  6. Python使用matplotlib可视化发散棒棒糖图、发散棒棒糖图可以同时处理负值和正值、并按照大小排序区分数据、为发散棒棒糖图的特定数据点添加标签、自定义背景填充色、自定义数据点颜色

    Python使用matplotlib可视化发散棒棒糖图.发散棒棒糖图可以同时处理负值和正值.并按照大小排序区分数据.为发散棒棒糖图的特定数据点添加标签.自定义背景填充色.自定义数据点颜色(Diverg ...

  7. R语言使用ggpubr包的ggdotplot函数可视化水平棒棒糖图(自定义分组数据点色彩、自定义调色板、在两端添加点图的线段segments、整体排序从大到小、自定义数据点的大小、添加数值标签)

    R语言使用ggpubr包的ggdotplot函数可视化水平棒棒糖图(自定义分组数据点色彩.自定义调色板.在两端添加点图的线段segments.整体排序从大到小.自定义数据点的大小.添加数值标签) 目录

  8. 将自定义功能添加到Spring数据存储库

    Spring Data非常方便,并且避免了样板代码,从而加快了开发速度. 但是,在某些情况下,注释查询不足以实现您可能想要实现的自定义功能. 因此,spring数据允许我们向Spring数据存储库添加 ...

  9. R语言使用lm函数构建简单线性回归模型(建立线性回归模型)、拟合回归直线、可视化散点图并添加简单线性回归直线、添加模型拟合值数据点、自定义pch参数设置数据点形式

    R语言使用lm函数构建简单线性回归模型(建立线性回归模型).拟合回归直线.可视化散点图并添加简单线性回归直线.添加模型拟合值数据点.自定义pch参数设置数据点形式 目录

最新文章

  1. 小程序点击图片自动播放视频,停止上一个视频播放
  2. mysql 5.7 修改root 密码
  3. DeepChem | DeepChem的图卷积特征化器
  4. 英语写作中常见语法总结(一)
  5. HashMap测试程序2
  6. 复习Linux基本操作----常见指令
  7. 5.Underfitting and Overfitting
  8. [批处理]截取for命令里面的变量%%i
  9. 天津大学学硕和专硕的区别_21考研考生,学硕与专硕的区别你必须知道,选错或后悔读研...
  10. 2021.9.8 华为笔试题第三题
  11. 穿越回二年级讲CPU工作原理。
  12. 阿里代码规范插件安装和使用技巧
  13. C语言将十进制输出二进制、八进制、十六进制的方法总结
  14. vdagent与vdserver
  15. 微信小程序实现开关原理、动态添加class
  16. 高效删除Oracle数据库中重复数据,并保留最新一条的方法
  17. WPF下聊天气泡的实现
  18. 九度OJ 1183:守形数 (数字特性)
  19. 计算机专业论文写作提纲,论文写作提纲范文
  20. 跟牛老师一起学WEBGIS——WEBGIS实现(绘制切片)

热门文章

  1. Cloud Native Weekly | 华为云抢先发布Redis5.0,红帽宣布收购混合云提供商 NooBaa
  2. JS调用媒体设备失败 --- getUserMedia undefine 问题(各浏览器配置方法)
  3. 写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一格空格。如输入1990,应输出”1 9 9 0“
  4. vijos1556 祖玛游戏
  5. [网络安全学习篇13]:IP包头分析与路由原理及实验(千峰网络安全视频笔记 13 day)
  6. 开发DBA在做什么?
  7. X Error:BadDrawable (individ Pixmap or Window parameter 9)
  8. .NET(C#、VB)APP开发——Smobiler平台控件介绍:ArcFace人脸识别
  9. mac终端远程连接mac查询端口被占用
  10. 网易大数据用户画像实践