找回密码
 立即注册

QQ登录

只需一步,快速开始

linyimin

注册会员

17

主题

60

帖子

187

积分

注册会员

积分
187
linyimin
注册会员   /  发表于:2024-8-14 13:51  /   查看:1198  /  回复:10
1金币
本帖最后由 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[0];
                    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);
                }
            }
            
        }



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

最佳答案

查看完整内容

您好,这个其实您改一下数组即可: pageReport.Report.ReportParameters[0].DefaultValue.Values.Add("参数1"); ReportParameters里面是我们设计的所有的参数, 我们可以通过这里面的name判断是哪一个参数,然后便利循环把参数给进去即可

10 个回复

倒序浏览
最佳答案
最佳答案
Felix.LiWyn认证
超级版主   /  发表于:2024-8-14 13:51:48
来自 11#
您好,这个其实您改一下数组即可:
pageReport.Report.ReportParameters[0].DefaultValue.Values.Add("参数1");

ReportParameters里面是我们设计的所有的参数,
我们可以通过这里面的name判断是哪一个参数,然后便利循环把参数给进去即可
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2024-8-15 17:38:45
2#
大佬。您可以大概说一下您的这个方法使用地方吗。

看您第一个,是显示一个文本+参数。理论上参数外部传入即可。但是确定您第二块代码是在哪块调用的。可以说一下整个场景的使用。
回复 使用道具 举报
linyimin
注册会员   /  发表于:2024-8-16 09:41:58
3#
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[0] = "张大师";
                        rowData[1] = "2012-03-01";

                        for (int i = 0; i < paramTable.Columns.Count; ++i)
                        {
                                string strColmn = paramTable.Columns.ColumnName;
                                object value = paramTable.Rows[0];
                                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.LiWyn认证
超级版主   /  发表于:2024-8-19 12:21:09
4#
您可以试一下,把
PageDocument runtime = new PageDocument(this.m_curPage);
去了,直接用
this.m_curPage.Document
这个也是一个pageDocument对象,可以add参数
回复 使用道具 举报
linyimin
注册会员   /  发表于:2024-8-19 14:20:01
5#

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

本帖子中包含更多资源

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

x
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2024-8-19 18:08:34
6#
这样,您看您能把项目的Demo给我们发一下嘛,我们这里也测试一下
抽一个简单的Demo即可。非常感谢
回复 使用道具 举报
linyimin
注册会员   /  发表于:2024-8-20 14:31:17
7#
本帖最后由 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:单击重新加载数据按钮,就可以出发数据刷新,然后进行设置断点调试。谢谢

本帖子中包含更多资源

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

x
回复 使用道具 举报
linyimin
注册会员   /  发表于:2024-8-20 14:56:43
8#

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

本帖子中包含更多资源

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

x
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2024-8-20 17:51:43
9#
本帖最后由 Felix.Li 于 2024-8-20 17:56 编辑

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


您可以先看看对不对,如果不对,您可以说一下使用场景是什么,要怎么用大概说一下

本帖子中包含更多资源

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

x
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部