Winform中报表RDLC的设计与实现
来源:互联网 发布:windows 空间音效 编辑:程序博客网 时间:2024/06/06 16:52
在日常工作中经常会看到一些表格,如成绩单,绩效考核单等等,这些表格设计起来并不复杂。今天就来记录一下在winform中设计实现RDLC报表的方法和步骤。通常在报表制作中主要涉及到如两个大元素:报表格式设计,报表数据源绑定。
1.首先创建一个窗体Form,然后添加一个报表浏览器ReportViewer,该报表浏览器可直接从工具箱中拖拽。如下图所示:
2.在新创建的Form窗体同一目录下添加报表,右键–>添加–>新建项,弹出一个“添加新项”窗口,选择Reporting菜单项,然后选择报表,如下图所示:
3.报表添加完成后,双击打开报表Report1.rdlc,如下图所示。点击左侧工具箱可以根据需要添加表格,文本框等,设计报表样式。
4.报表设计好后,需要创建报表所需数据集,同样右键–>添加–>新建项,弹出一个“添加新项”窗口。但这次选择的是Reporting菜单项上方的“数据”菜单项。然后选择数据集,输入数据集名字,点击确定,完成数据集创建。如下如所示:
5.双击打开新创建的数据集DataSet,空白处右键添加数据表,或者从工具箱中拖拽。
选中数据表,右键添加数据列,并输入数据列的名字
6.重新打开报表Report1.rdlc。在设计好的报表中,点击报表中单元格右上角的数据库图标,添加刚刚创建的数据集到报表中。
在表格设计中可能会涉及到根据类别分组,如下图所示表格样式,行根据类别分组
分组方法:选中机型名称列单元格,右键选择“添加组”–>”行组”–>”父组”,打开Tablix组界面。
添加完成后,如下图所示
列的分组与行分组类似。
7.有些报表可能需要添加报表参数,根据程序动态改变。
报表数据中,选择“参数”,右键选择“添加参数”,如下图所示
设置参数名称
参数设置完成后,工具箱中拖拽一个文本框到报表中,设置文本框名。
然后,右键文本框,选择“文本框”属性,打开文本框属性窗口,设置参数名称和参数值。注意,参数名字必须和文本框名字一致!
报表设计完成之后,就需要在代码中给报表数据集和参数填充数据源。
8.填充数据源
在给报表填充数据源时,我习惯于写一个通用方法。如下是主要代码片段
/// <summary> /// 生成图表 /// </summary> /// <param name="ds_results">数据源</param> /// <param name="rp">报表参数</param> private void generateChart( DataSet ds_source, ReportParameter[] rp) { try { if (ds_results.Tables.Count > 0) { //重置报表 this.reportViewer1.Reset(); this.reportViewer1.LocalReport.ReportEmbeddedResource = "Report1.rdlc"; //指定报表参数 for (int i = 0; i < rp.Length; i++) { this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp[i] });//与报表有关问题 } //报表数据源 ReportDataSource rds1 = new ReportDataSource("DataSet1", ds_results.Tables["DataSet1"]);//注意此处数据集名字“DataSet1”必须要和添加的数据集名字相同,否则无法绑定数据源至报表数据集 ReportDataSource rds2= new ReportDataSource("DataSet2", ds_results.Tables["DataSet2"]); reportViewer1.LocalReport.DataSources.Clear(); reportViewer1.LocalReport.DataSources.Add(rds1 ); reportViewer1.LocalReport.DataSources.Add(rds2 ); reportViewer1.RefreshReport(); } else { MessageBox.Show("没有数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); //报表数据源 ReportDataSource rds1 = new ReportDataSource("DataSet1", ds_results.Tables["DataSet1"]); ReportDataSource rds2= new ReportDataSource("DataSet2", ds_results.Tables["DataSet2"]); reportViewer1.LocalReport.DataSources.Clear(); reportViewer1.LocalReport.DataSources.Add(rds1 ); reportViewer1.LocalReport.DataSources.Add(rds2 ); reportViewer1.RefreshReport(); } } catch (Exception ex) { } }//以下为主方法内代码: #region 绑定报表参数 string p1 = "参数1"; string p2="参数2"; ReportParameter[] rp = new ReportParameter[2];// string[] rptName = new string[2] { "START_END_TIME", "参数名2" };//这里要注意,报表参数和文本框的名字必须一致 object[] rptValue = new object[] { p1, p2}; for (int i = 0; i < rp.Length; i++) { rp[i] = new ReportParameter(rptName[i], rptValue[i].ToString()); } #endregion//绑定报表参数后,准备数据集数据源DataSet,然后调用上面通用方法generateChart(ds_source,rp);
以上,即为报表设计和为报表填充数据的主要步骤。
- Winform中报表RDLC的设计与实现
- Winform rdlc 报表的直接打印
- 关于Winform中rdlc报表内存溢出问题解决方案
- C# 报表设计器 (winform 设计端)开发与实现生成网页的HTML报表 开放源码及调试
- rdlc报表的使用
- C#中实现动态隐藏/显示RDLC报表的表头(列)
- VS2010beta2中RDLC与水晶报表之简单评测
- C# 实现 RDLC 自定义报表
- rdlc 报表实现百分比显示
- aspx+rdlc实现报表功能
- RDLC报表上下标实现
- .C#中使用RDLC报表
- RDLC报表中添加链接
- RDLC报表的Matrix与Table分页时的问题
- rdlc报表中引用隐藏的TextBox的值
- 在VS2005中创建rdlc报表需要注意的地方
- rdlc 报表中 Width, PageWidth, InteractiveWidth 各指的是什么?
- asp.net中轻量级报表RDLC的动态数据绑定
- 判断元素出栈、入栈顺序的合法性
- 《ActiveMQ in Action》【PDF】
- JS中常用的Math方法
- 矩阵链相乘
- Jfinal HttpKit.post(url,data)源码解析
- Winform中报表RDLC的设计与实现
- 6年前的防sql注入服务器安全配置文章,依然很有用
- [操作系统] 页面置换算法(一)
- 【Python】python引入外部文件
- HDU1251 统计难题(Trie树)
- 工作一周总结
- 算法导论:c++计数排序
- MongoDB数组更新操作$addToSet和$each修饰符
- java任务--GradeSort