C#ReportViewer应用小结

近日由于项目需要,需要做一个报表功能,找了N多资料,最后还是觉得就用以前在VB.NET上用过的ReportViewer控件来完成。但是发现,VS2019居然没有这个控件,下面把安装控件和控件使用方面的经验记录再此。

1. 下载安装

1.1 通过NuGet下载相关包。

在这里插入图片描述
在这里插入图片描述

1.2 安装报表设计器

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2. 报表设计

2.1 添加1个报表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 设计报表

2.2.1 页面设置

在报表主体外面点击鼠标右键,点击快捷菜单中的报表属性按钮。

在弹出的如下窗口中设置纸张大小和页边距。
在这里插入图片描述

2.2.2 添加页眉页脚

在报表主体外面点击鼠标右键,点击快捷菜单中的相应按钮。
在这里插入图片描述
注意:页眉页脚的高度需要根据需要设计,报表打印中的页眉页脚高度与再此设计的一样,主体部分高度会自适应。

页眉和页脚可插入的对象如下图:
在这里插入图片描述
在这里插入图片描述

2.2.3 插入页码

在页脚插入一个文本框,右键点击文本框(注意不是在文本框编辑模式哦),在弹出的菜单中点击“表达式”,如下图。

在弹出的对话框中双击相应的项,再确定就OK。本人测试,一次只能输入1个参数,想要一次性弄成“第N页 共 M 页”好像是不行的,得拿个文本框显示当前页码,一个文本框显示总页数,一个文本框显示“第 页 共 页”,然后将他们的位置调一下。也许是我还没完全搞懂,有知道的可留言分享下。
在这里插入图片描述

2.2.4 主体部分设计

主体部分可插入的对象:
在这里插入图片描述

2.2.5 主体表格重复标题行

这个花我时间最长,完全把以前的经验忘干净了,查了很多资料才搞定。直接说步骤:

(1) 勾选设计器下方的高级模式,然后在“行组”和“列组”中才会有列出的内容。
在这里插入图片描述
(2) 列标题得在“行组”中设置,选中最上面那个“静态”,在设计区域就可以看到标题行被选中了。
在这里插入图片描述
(3) 选中主体设计区中表格的标题行,注意是整行选中,点击鼠标右键,在弹出的快捷菜单中点击“Tablix属性”按钮。
在这里插入图片描述
在这里插入图片描述
在弹出的对话框中勾选红框中的选项,点击“确定”。
在这里插入图片描述

2.3 建立数据源

(1) 右键单击属性窗中的项目名称–>新建项–>添加数据集。
在这里插入图片描述
(2) 在数据集设计窗体中添加你想要的数据集。我这里为了改写方便,建的是datatable.
在这里插入图片描述
报表设计好后,数据集建好了,就可以考虑如何呈现报表了。

2.4 通过reportviewer显示/打印/导出报表

(1) 新建一个winform,在winform中拖放一个reportviewer控件
在这里插入图片描述
(2) 点击报表控件右上角的小三角形,选择要显示的报表。
在这里插入图片描述

(3) 点击报表控件右上角的小三角形,选择数据源。
在这里插入图片描述
(3) 更新数据源内容,并更新报表。我这里需要用到两个数据源,一个是“DataTable01_0”,一个是“DataTable01_1”。此部分我是通过代码来完成的。点击窗体上的“button1”就更新数据和更新报表。代码如下:

private void button1_Click(object sender, EventArgs e)
        {
            //清除原来datatable中的数据
            DataSet01._DataTable01_0.Rows.Clear();
            //给datatable添加新数据,注意数据要与设计的datatable字段对应。
            DataSet01._DataTable01_0.Rows.Add(new object[] { "2022-01-05-01", "XXXXXX", "XXXXXXX", "XXXXXX", "XXXXX", "XXXXX", "XXXXX", "XXXXX", 10000000, 1300000, 9000000, "XXXXX", "荀彧", "诸葛亮" });

            //清除原来datatable中的数据
            DataSet01._DataTable01_1.Rows.Clear();
            //给datatable添加新数据,注意数据要与设计的datatable字段对应。
            for (int i = 1; i <= 100; i++)
            {
                DataSet01._DataTable01_1.Rows.Add(new object[] { i, "商品名称" + i, "商品规格" + i, "套", 5, 100, 500, "备注内容" + i });
            }
            //清除reportviewer1中原来的数据绑定
            this.reportViewer1.LocalReport.DataSources.Clear();
            //重新给reportviewer1绑定数据源,名称需要用我们之前设定的 "DataSet01_0"
            this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet01_0", (DataTable)DataSet01._DataTable01_0));
            this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet01_1", (DataTable)DataSet01._DataTable01_1));
            //刷新报表控件,显示最新数据
            this.reportViewer1.RefreshReport();
        }

3. 小结

走了不少弯路,整体步骤就是这么一个过程。还有些细节需要慢慢摸索。好像这个报表文件是可以放在服务器的,还没研究出来。希望此文可以让看到的人少走一些弯路。

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值