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

QQ登录

只需一步,快速开始

Zzzzz.

注册会员

8

主题

10

帖子

42

积分

注册会员

积分
42
最新发帖

[已处理] AR15

Zzzzz.
注册会员   /  发表于:2025-10-29 11:21  /   查看:44  /  回复:1
1金币
报表的查询条件可以传查询条件参数 并且查询的结果可以在前端vue3中的以报表的形式显示出来 后端使用的是C# 前端使用的是vue3  数据库是sqlserver 麻烦给个示例

最佳答案

查看完整内容

您好,我这边搭了个可以直接运行的Demo。没有用VUE,不过把script.js里面的js直接赋值过去用就行,也就两行代码。 具体就是 咱们是要传到后端服务器嘛。 我先说一下咱们的正常的希望做到的流程,是希望传参数,然后后端利用传递的参数,把查询好的数据集赋值给报表。 咱们要做的步骤我在总结一下: 1.报表需要用桌面设计器做 Object provider(或者叫Object 提供程序) 的数据源,然后在报表中使用这个数据源。 https:/ ...

1 个回复

最佳答案
最佳答案
Felix.LiWyn认证
超级版主   /  发表于:2025-10-29 11:21:19
来自 2#
您好,我这边搭了个可以直接运行的Demo。没有用VUE,不过把script.js里面的js直接赋值过去用就行,也就两行代码。



具体就是

咱们是要传到后端服务器嘛。
我先说一下咱们的正常的希望做到的流程,是希望传参数,然后后端利用传递的参数,把查询好的数据集赋值给报表。
咱们要做的步骤我在总结一下:
1.报表需要用桌面设计器做 Object provider(或者叫Object 提供程序) 的数据源,然后在报表中使用这个数据源。
https://help.grapecity.com.cn/5968534.html
然后报表本身需要添加参数,有参数,才能通过前端传递,后端也才能接受。
按理说咱们以前的报表就是这么设计的,应该可以直接服用。

2.前端传递参数
  1. viewer.openReport(reportName, [{ name: '参数名称', values: ['参数值'] }]);
复制代码


注意这里的参数需要在报表中前一步添加的。

3.后端根据前端参数,实现给报表传递数据:
  1. app.UseReporting(config =>
  2. {
  3.     config.UseFileStore(ResourcesRootDirectory, null, FileStoreOptions.NestedFoldersLookup);
  4.     config.SetLocateDataSource(args =>
  5. {
  6.     if (args.ReportParameters[0].Value.ToString() == "test")
  7.         return GetData();
  8.     else
  9.         return null;
  10. });
  11. });
复制代码
之前的有点问题,这里要用SetLocateDataSource


整体就是:当这个报表被前端打开的时候,报表因为有Object provider的数据源,就会进这个方法LocateDataSource。然后args里面就会有前端传递的参数

本帖子中包含更多资源

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

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