SSRS如何在两个RDL文件间传递查询参数并实现超链接跳转?
SSRS报表间带参数的超链接实现方案
一、JavaScript URL语法格式
你需要构造一个包含报表2路径及所有参数的JavaScript URL,实现点击文本框时自动传递报表1的所有参数(含当前文本框的值)。示例语法如下:
javascript:void(window.open('/ReportServer/Pages/ReportViewer.aspx?/YourReportFolder/rpt#2&ParamA=' + Parameters!ParamA.Value + '&TargetParam=' + Fields!TextBoxField.Value + '&ParamC=' + Parameters!ParamC.Value, '_blank'))
各部分说明:
/ReportServer/Pages/ReportViewer.aspx:SSRS默认的报表查看器入口路径,需根据你的实际部署环境调整(比如本机部署可改为http://localhost/ReportServer/Pages/ReportViewer.aspx)?/YourReportFolder/rpt#2:报表2在报表服务器上的完整路径,替换成你实际的报表文件夹和报表名称&参数名=参数值:逐个拼接所有需要传递的参数:- 报表1已有的公共参数,直接用
Parameters!参数名.Value获取当前运行时的参数值 - Tablix文本框对应的目标参数,用
Fields!绑定字段名.Value获取当前行的字段值
- 报表1已有的公共参数,直接用
_blank:指定在新窗口打开报表2,若需在当前窗口打开可替换为_self
特殊字符处理
如果参数值包含空格、&、=等特殊字符,需要用encodeURIComponent()包裹参数值,避免URL解析错误,示例:
javascript:void(window.open('/ReportServer/Pages/ReportViewer.aspx?/YourReportFolder/rpt#2&ParamA=' + encodeURIComponent(Parameters!ParamA.Value) + '&TargetParam=' + encodeURIComponent(Fields!TextBoxField.Value), '_blank'))
二、报表2的参数设置
不需要强制将参数设置为hidden,可根据业务需求选择:
- 若要完全隐藏参数(用户不可见、不可修改):设置参数为Hidden
- 若允许用户查看参数但禁止修改:设置参数为Internal
- 若希望用户能看到并修改参数值,但无需重新输入:保持参数为Visible即可——超链接传递的参数值会自动填充到报表2的参数界面,用户直接点击运行即可
注意事项
- 参数名称必须完全匹配:报表1和报表2的参数名称需严格一致(大小写敏感),否则参数无法正确传递
- 测试路径:先直接在浏览器中拼接URL测试,确认参数能正确传递后再配置到文本框的超链接中
内容的提问来源于stack exchange,提问作者user19210181
相关产品推荐
相关产品推荐

