Bella.Yuan 发表于 2023-5-12 11:13:46

winform如何使用代码给对应的组件进行赋值I

本帖最后由 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.TableCells.ReportItems;//Header是报表头
            textHeader = (GrapeCity.ActiveReports.PageReportModel.TextBox)sHeader;
            textHeader.Value = "aaaaaaaa";
//修改明细行
            var sDetails = table.Details.TableRows.TableCells.ReportItems;//Details是明细行
            textDetail = (GrapeCity.ActiveReports.PageReportModel.TextBox)sDetails;
            //textDetail.Value = "=Fields!地区.Value";
            textDetail.Value = "bbbbbbbb";
//修改报表尾
            var sFooter = table.Footer.TableRows.TableCells.ReportItems;//Footer是报表尾
            textFooter = (GrapeCity.ActiveReports.PageReportModel.TextBox)sFooter;
            textFooter.Value = "cccccccc";
//展示报表
            this.viewer1.LoadDocument(report.Document);


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

附件是demo,欢迎大家一起交流~
页: [1]
查看完整版本: winform如何使用代码给对应的组件进行赋值I