找回密码
 立即注册

QQ登录

只需一步,快速开始

Bella.Yuan Wyn认证
超级版主   /  发表于:2023-5-12 11:13  /   查看:1707  /  回复:3
本帖最后由 Bella.Yuan 于 2024-10-18 13:38 编辑

问题来源可以参考这个帖子:https://gcdn.grapecity.com.cn/showtopic-167309-1-1.html

问题:winform页面报表控件如何使用代码给对应的组件进行赋值。
1.使用代码给文本框组件赋值
思路:先获取到报表文件,然后根据组件名称获取对应的组件,然后修改组件的值
代码:
//获取报表文件
System.IO.FileInfo rptPath = new System.IO.FileInfo(@"0425.rdlx");
GrapeCity.ActiveReports.PageReport report = new GrapeCity.ActiveReports.PageReport(rptPath);
//修改文本框的值
            GrapeCity.ActiveReports.PageReportModel.ReportItem item = report.Report.Body.ReportItems["文本框7"];
            GrapeCity.ActiveReports.PageReportModel.TextBox text = new GrapeCity.ActiveReports.PageReportModel.TextBox();
            text = (GrapeCity.ActiveReports.PageReportModel.TextBox)item;
            text.Value = "kkkkkkkkkkk";
//展示报表
            this.viewer1.LoadDocument(report.Document);


2.使用代码给表格中的文本框赋值

思路:先获取到报表文件,然后根据组件名称获取对应的组件,然后在获取对应的表格中的报表头,明细行,报表尾,这里我将3个均修改了,大家根据实际情况进行修改就可以。明细行可以赋常量值也可以赋变量,具体参考代码和图片。
代码:

//获取报表文件
System.IO.FileInfo rptPath = new System.IO.FileInfo(@"0425.rdlx");
            GrapeCity.ActiveReports.PageReport report = new GrapeCity.ActiveReports.PageReport(rptPath);
//获取报表文件中的表格组件
            GrapeCity.ActiveReports.PageReportModel.ReportItem item = report.Report.Body.ReportItems["表格1"];
//定义3个文本框,用来修改值
            GrapeCity.ActiveReports.PageReportModel.TextBox textHeader = new GrapeCity.ActiveReports.PageReportModel.TextBox();
            GrapeCity.ActiveReports.PageReportModel.TextBox textDetail = new GrapeCity.ActiveReports.PageReportModel.TextBox();
            GrapeCity.ActiveReports.PageReportModel.TextBox textFooter = new GrapeCity.ActiveReports.PageReportModel.TextBox();
//定义一个空table
            GrapeCity.ActiveReports.PageReportModel.Table table = new GrapeCity.ActiveReports.PageReportModel.Table();
//给table赋值
            table = (GrapeCity.ActiveReports.PageReportModel.Table)item;
//修改报表头
            var sHeader = table.Header.TableRows[0].TableCells[0].ReportItems[0];//Header是报表头
            textHeader = (GrapeCity.ActiveReports.PageReportModel.TextBox)sHeader;
            textHeader.Value = "aaaaaaaa";
//修改明细行
            var sDetails = table.Details.TableRows[0].TableCells[3].ReportItems[0];//Details是明细行
            textDetail = (GrapeCity.ActiveReports.PageReportModel.TextBox)sDetails;
            //textDetail.Value = "=Fields!地区.Value";
            textDetail.Value = "bbbbbbbb";
//修改报表尾
            var sFooter = table.Footer.TableRows[0].TableCells[0].ReportItems[0];//Footer是报表尾
            textFooter = (GrapeCity.ActiveReports.PageReportModel.TextBox)sFooter;
            textFooter.Value = "cccccccc";
//展示报表
            this.viewer1.LoadDocument(report.Document);


报表头,明细行,报表尾的对应文本框的获取,可以使用编辑工具打开报表文件,这里我用的是VSCode,然后依据这里的结构配合Debug模式就可以找到对应的要修改的文本框,然后赋值修改就可以。

附件是demo,欢迎大家一起交流~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

3 个回复

倒序浏览
Bella.YuanWyn认证
超级版主   /  发表于:2024-12-10 09:59:33
沙发
更新:使用代码给条形码组件赋值:
使用vscode打开报表文件,观察对应的报表结构,找到需要更改的值



代码中根据实际结果获取:

预览结果:

教程中的demo,没有包含这个示例,有需要可以下载示例demo,参考上面的图添加对应的代码既可实现。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
luckygroup
注册会员   /  发表于:2024-12-10 12:15:22
板凳
Bella.Yuan 发表于 2024-12-10 09:59
更新:使用代码给条形码组件赋值:
使用vscode打开报表文件,观察对应的报表结构,找到需要更改的值

谢谢版主的回复与指导!
回复 使用道具 举报
Bella.YuanWyn认证
超级版主   /  发表于:2024-12-10 12:17:04
地板
luckygroup 发表于 2024-12-10 12:15
谢谢版主的回复与指导!

不客气,后面有问题开新帖哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部