请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

tangke888 Wyn认证

高级会员

107

主题

332

帖子

1547

积分

高级会员

积分
1547

活字格高级认证Wyn认证活字格认证

QQ
tangke888 Wyn认证
高级会员   /  发表于:2025-1-21 23:11  /   查看:222  /  回复:21
1金币




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

最佳答案

查看完整内容

您参考这个: https://gcdn.grapecity.com.cn/showtopic-232391-1-1.html 第二个里面第一个,通过web把参数传给报表。 这样这个json数据源就给报表参数了。 然后在数据源那里使用表达式: {@参数} 就可以了 报表您可以参考这个报表:

21 个回复

倒序浏览
最佳答案
最佳答案
Felix.LiWyn认证
超级版主   /  发表于:2025-1-21 23:11:27
来自 4#
您参考这个:
https://gcdn.grapecity.com.cn/showtopic-232391-1-1.html


第二个里面第一个,通过web把参数传给报表。
这样这个json数据源就给报表参数了。
然后在数据源那里使用表达式:
{@参数}
就可以了
报表您可以参考这个报表:

本帖子中包含更多资源

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

x
回复 使用道具 举报
Eden.SunWyn认证
超级版主   /  发表于:2025-1-22 09:51:04
2#
您好,这个您参考下下面的教程,这个数据源的替换需要再后端程序中解析报表文件,然后修改报表中的数据源信息的:

https://gcdn.grapecity.com.cn/showtopic-144483-1-2.html
回复 使用道具 举报
tangke888Wyn认证
高级会员   /  发表于:2025-1-22 10:11:08
3#
本帖最后由 tangke888 于 2025-1-22 10:41 编辑

有些复杂,有没有简便 些的
回复 使用道具 举报
tangke888Wyn认证
高级会员   /  发表于:2025-1-24 00:13:30
5#
本帖最后由 tangke888 于 2025-1-24 00:20 编辑

假如前端代码为
  1.         const paymentData = [
  2.             {
  3.                 "PayInID": "f7392982-b6a8-4c20-81ca-80d79efde5b6",
  4.                 "BillNo": "I202501190008",
  5.                 "Pay_InUID": "be0d51d8a1c4416bb3e075621a13efe7",
  6.                 "BillDate": "2025-01-19 23:25:25",
  7.                 "SourceType": 1,
  8.                 "PayDate": "0001-01-01 00:00:00",
  9.                 "CustomersID": "86a2d52e-957e-4d63-90d6-5ea7faddb428",
  10.                 "IsPay": 0,
  11.                 "PayTotal": 2595,
  12.                 "Status": 1,
  13.                 "CreateID": 1,
  14.                 "Creator": "超级管理员",
  15.                 "CreateDate": "2025-01-19 23:25:25",
  16.                 "ModifyID": null,
  17.                 "Modifier": null,
  18.                 "ModifyDate": null,
  19.                 "IsDelete": 0,
  20.                 "Remark": "自动生成的收款单",
  21.                 "PayTotalUp": "贰仟伍佰玖拾伍元零角零分",
  22.                 "PayIn_Entry": null,
  23.                 "elementIndex": 0
  24.             },
  25.             {
  26.                 "PayInID": "28e3c44e-0fd1-4d87-b0b2-b5b58301f96d",
  27.                 "BillNo": "I202501190004",
  28.                 "Pay_InUID": "94c556cae5244201accf3bdbdc357020",
  29.                 "BillDate": "2025-01-19 23:25:24",
  30.                 "SourceType": 1,
  31.                 "PayDate": "0001-01-01 00:00:00",
  32.                 "CustomersID": "8ed1b7f2-21e6-42c1-9eef-01f1f518cf76",
  33.                 "IsPay": 0,
  34.                 "PayTotal": 120,
  35.                 "Status": 1,
  36.                 "CreateID": 1,
  37.                 "Creator": "超级管理员",
  38.                 "CreateDate": "2025-01-19 23:25:24",
  39.                 "ModifyID": null,
  40.                 "Modifier": null,
  41.                 "ModifyDate": null,
  42.                 "IsDelete": 0,
  43.                 "Remark": "自动生成的收款单",
  44.                 "PayTotalUp": "壹佰贰拾元零角零分",
  45.                 "PayIn_Entry": null,
  46.                 "elementIndex": 1
  47.             }
  48.         ];

  49.         this.viewer = createViewer({
  50.             element: '#viewer-host',
  51.             reportService: {
  52.                 url: serverUrl + '/api/reporting',


  53.                reportParameters: paymentData
  54.    
  55.             }
  56.         });
  57.         this.viewer.openReport("Test.rdlx");
复制代码

为什么我设置出来的模板,无法接收到参数,并解释

数据源的表达式要怎么写?谢谢!!






本帖子中包含更多资源

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

x
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2025-1-24 09:53:42
6#
1.数据源表达式.因为json的校验,必须要json类型的或者json数组,所以必须是 [] 内,然后表达式依旧是符合报表的所有的表达式规则,所以直接{表达式}即可。而前面的jsondata=是必须都要带的,代表这里是json数据。
所以得到的结果就是:jsondata=[ {@报表参数1}];

2.参数无法接收,是因为参数传递需要 name和values:

  1. let viewer = createViewer({
  2.     element: '#ar-web-viewer',
  3.     reportParameters: [{name: "paramter1", values: ["js传参"]}]
  4. });
复制代码


3.格式问题,因为您的json数组:paymentData是一个数组对象,而报表接收的是一个字符串,所以需要序列化,其次,因为在报表内部已经加了 [] 也就是数组,所以最终传递的结果只需要有所有对象即可,所以需要两部:
1.转化字符串: JSON.stringify(paymentData)
2.去掉[] :substring(1,JSON.stringify(paymentData).length - 1)

总体和下来,您的需要:
  1. let paramter = JSON.stringify(paymentData).substring(1,JSON.stringify(paymentData).length - 1);
  2. this.viewer = createViewer({
  3.     element: '#viewer-host',
  4.     reportService: {
  5.         url: serverUrl + '/api/reporting',
  6.        reportParameters:  [{ name: "报表参数1", values: [paramter] }],

  7.     }
  8. });

  9. this.viewer.openReport("Test.rdlx",[{ name: "报表参数1", values: [paramter] }]);
复制代码
参数传递推荐您在open的时候传递,create的时候传递,会给后续所有打开的报表,有这个参数名称的报表都赋值。而open是打开指定报表给指定参数赋值

本帖子中包含更多资源

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

x
回复 使用道具 举报
tangke888Wyn认证
高级会员   /  发表于:2025-1-24 10:31:58
7#
谢谢!!

  1.         this.viewer = createViewer({
  2.             element: '#viewer-host',
  3.             reportService: {
  4.                 url: serverUrl + '/api/reporting',
  5.               
  6.                 reportParameters:  [{ name: "报表参数1", values: [paramter] }],
  7.    
  8.             }
  9.         });
  10.         this.viewer.openReport("Test.rdlx");
复制代码


为什么这样是没有效果的?
回复 使用道具 举报
tangke888Wyn认证
高级会员   /  发表于:2025-1-24 10:51:00
8#
传参数过来后,参数面板,会显示传参过来的值吗

本帖子中包含更多资源

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

x
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2025-1-24 11:03:15
9#
您是不是传的不是字符串类型的,我这边测试都是没有问题的:


下面是一个简单的Demo:

本帖子中包含更多资源

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

x
回复 使用道具 举报
tangke888Wyn认证
高级会员   /  发表于:2025-1-24 11:59:28
10#
这样传参数  , 参数值大小有没有限制,最大能传多少
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部