找回密码
 立即注册

QQ登录

只需一步,快速开始

Bella.Yuan Wyn认证
超级版主   /  发表于:2023-5-12 11:13  /   查看:1623  /  回复:1
本帖最后由 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

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部