在SSRS 2008中,我想创建一个相对路径URL。长话短说我有一个订阅,它将几千个静态HTML页面输出到一个用作网站内容的文件夹。在过去,我使用文本框属性 - >创建了网站上其他页面的完整URL(实际上是子报告)。行动 - >转到URL。我想修改我的代码,以便它返回目标的相对路径而不是完整的URL。这将通过更改网站域或文件夹结构来减少某人最终破坏导航的可能性。当我尝试使这项工作时,之前可点击的对象不再是可点击的。 如何将SSRS超链接跳转到相对网址而不是完全限定的网址?
这是有效的:
="https://some.domain.com/some_page/" + Fields!Custom_Page_Name.Value.ToString() + ".html"
这是不起作用的:
="../" + Fields!Custom_Page_Name.Value.ToString() + ".html"
="/" + Fields!Custom_Page_Name.Value.ToString() + ".html"
=Fields!Custom_Page_Name.Value.ToString() + ".html"
="..\" + Fields!Custom_Page_Name.Value.ToString() + ".html"
="\" + Fields!Custom_Page_Name.Value.ToString() + ".html"
答案 0 :(得分:6)
如果查看在Visual Studio中运行报表时生成的警告,您将得到答案:
[rsInvalidURLProtocol]文本框'textbox6'的Hyperlink属性的值'test.html'具有无效的架构。报告中的网址只能使用http://,https://,ftp://,mailto:或news:
即。 URL必须具有这些协议之一,并且因为在协议开始时无法编写相对URL,这意味着SSRS不支持相对URL。
另一种方法是在参数中设置基本URL,然后可以轻松更改,只需更新html页面即可重新生成。
答案 1 :(得分:6)
只需阅读此问卷和答案,并为任何人寻找更好的解决方案。如果你想要相对网址,那么只需使用javascript,例如
="javascript:void(window.navigate( '/mydirectory/reportcountry.aspx?CountryID=" + Fields!CountryID.Value.ToString() + "'))"
答案 2 :(得分:3)
="javascript:void(window.open(document.URL.replace('CurrentReportName','NavigateToReportName'),'Window1','menubar=no,width=430,height=350,toolbar=no'));"
我知道这是一个老帖子。它可以帮助某人。注意:我正在使用SSRS 2008
答案 3 :(得分:0)
只需使用全局变量Globals!ReportServerUrl
因此"http://myservername/rs?/myreportname"
变为Globals!ReportServerUrl + "?/myreportname"
答案 4 :(得分:0)