linyimin 发表于 2024-8-14 13:51:47

Parameters不显示问题

本帖最后由 linyimin 于 2024-8-14 16:22 编辑

="编制人:"+(Parameters!编制人.Value).ToString()
ActiveReport 18 使用上面的配置字段显示,使用如下方式设置产生值,不显示,帮忙看一下是什么问题

private void GetParameterData(GrapeCity.ActiveReports.Core.Rendering.ReportParameters.ParameterCollection Pcol)
      {
            DataTable paramTable = new DataTable();
            int bRet = m_rptData(paramTable, m_strReportName, "TitleDataSet", "TitleDataSet");
            if (bRet == 1)
            {
                for (int i = 0; i < paramTable.Columns.Count; ++i)
                {
                  string strColmn = paramTable.Columns.ColumnName;
                  object value = paramTable.Rows;
                  GrapeCity.ActiveReports.Core.Rendering.ReportParameters.Parameter ppm = GrapeCity.ActiveReports.Core.Rendering.ReportParameters.Parameter.Create(strColmn,
                        "",
                        ParameterType.String,
                        ParameterState.HasValidValue,
                        true,
                        false,
                        true,
                        false,
                        false,
                        false,
                        true,
                        OrderByCondition.Value,
                        OrderByDirection.Ascending);

                  ppm.CurrentValue = value;

                  Pcol.Add(ppm);
                }
            }
            
      }



Felix.Li 发表于 2024-8-14 13:51:48

您好,这个其实您改一下数组即可:
pageReport.Report.ReportParameters.DefaultValue.Values.Add("参数1");

ReportParameters里面是我们设计的所有的参数,
我们可以通过这里面的name判断是哪一个参数,然后便利循环把参数给进去即可

Felix.Li 发表于 2024-8-15 17:38:45

大佬。您可以大概说一下您的这个方法使用地方吗。

看您第一个,是显示一个文本+参数。理论上参数外部传入即可。但是确定您第二块代码是在哪块调用的。可以说一下整个场景的使用。

linyimin 发表于 2024-8-16 09:41:58

Felix.Li 发表于 2024-8-15 17:38
大佬。您可以大概说一下您的这个方法使用地方吗。

看您第一个,是显示一个文本+参数。理论上参数外部传 ...

FileInfo info = new System.IO.FileInfo(m_strCurReport);
                        this.m_curPage = new GrapeCity.ActiveReports.PageReport(info);
                        PageDocument runtime = new PageDocument(this.m_curPage);
                        this.m_curPage.Document.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(locateData);
                        //GetParameterData(runtime.Parameters);
                        DataTable paramTable = new DataTable();
                        paramTable.Columns.Add("制作人");
                        paramTable.Columns.Add("编制日期");
                       
                        System.Data.DataRow rowData = paramTable.NewRow();
                        rowData = "张大师";
                        rowData = "2012-03-01";

                        for (int i = 0; i < paramTable.Columns.Count; ++i)
                        {
                                string strColmn = paramTable.Columns.ColumnName;
                                object value = paramTable.Rows;
                                GrapeCity.ActiveReports.Core.Rendering.ReportParameters.Parameter ppm = GrapeCity.ActiveReports.Core.Rendering.ReportParameters.Parameter.Create(strColmn,
                                        "",
                                        ParameterType.String,
                                        ParameterState.HasValidValue,
                                        true,
                                        false,
                                        true,
                                        false,
                                        false,
                                        false,
                                        true,
                                        OrderByCondition.None,
                                        OrderByDirection.Ascending);

                                ppm.CurrentValue = value;

                                runtime.Parameters.Add(ppm);
                        }
                        this.m_pageReportViewer.LoadDocument(m_curPage.Document);
就是通过这个PageDocument runtime.Parameters这个参数设置参数数据的,在ActiveReport 12版本,这样是没有问题正常的,升级到18后,报表就不显示相关参数数据了。

Felix.Li 发表于 2024-8-19 12:21:09

您可以试一下,把
PageDocument runtime = new PageDocument(this.m_curPage);
去了,直接用
this.m_curPage.Document
这个也是一个pageDocument对象,可以add参数

linyimin 发表于 2024-8-19 14:20:01


我使用你说的方法,this.m_curPage.Document.Parameters.Add数据,还是不行,报表回调数据时,sender对象也有我设置的参数数据,还是需要你们帮忙看一下,为什么,报表没有取到相关得参数数据,谢谢

Felix.Li 发表于 2024-8-19 18:08:34

这样,您看您能把项目的Demo给我们发一下嘛,我们这里也测试一下
抽一个简单的Demo即可。非常感谢

linyimin 发表于 2024-8-20 14:31:17

本帖最后由 linyimin 于 2024-8-20 14:55 编辑

Felix.Li 发表于 2024-8-19 18:08
这样,您看您能把项目的Demo给我们发一下嘛,我们这里也测试一下
抽一个简单的Demo即可。非常感谢
demo已经搞好,怎么发个你?现在发个你的我把你们编译出来的dll和编译需要的你们的dll依赖都去掉了需要你们自己搭建环境,把LbReportViewEx编译出来
调试:
1:双击ReportTest.exe运行出现以下界面

2:使用vs打开Report.sln
3:通过vs附件进程方式调试

4:单击重新加载数据按钮,就可以出发数据刷新,然后进行设置断点调试。谢谢

linyimin 发表于 2024-8-20 14:56:43


这个编制人地方没有显示相关数据

Felix.Li 发表于 2024-8-20 17:51:43

本帖最后由 Felix.Li 于 2024-8-20 17:56 编辑

看了您的,应该就是给参数的传值,我模拟的做了一个Demo。你可以参考一下:


您可以先看看对不对,如果不对,您可以说一下使用场景是什么,要怎么用大概说一下
页: [1] 2
查看完整版本: Parameters不显示问题