2009-10-20 132 views
4

在SSRS 2008中,我想创建一个相对路径URL。长话短说我有一个订阅,可以将数千静态HTML页面输出到用作网站内容的文件夹。在过去,我使用文本框属性 - >操作 - >转到URL,为网站上的其他页面(实际上是子报表)创建完整的URL。我想修改我的代码,以便返回目标的相对路径而不是完整的URL。这将减少有人最终通过更改网站域或文件夹结构来破坏导航的可能性。当我试图完成这项工作时,先前可点击的对象不再可以点击。 如何使SSRS超链接跳转到相对URL而不是完全限定的URL?SSRS:相对URL超链接

这里是什么工作:

="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

相对于当前页面? – zzawaideh 2009-10-23 17:03:19

+0

相对于坐在文件共享位置上的当前呈现报告文件。 – 2009-10-24 00:48:04

回答

4

如果你看一下警告生成当您运行Visual Studio中的报告,你会得到你的回答:

[rsInvalidURLProtocol]文本框'te'的超链接属性值'test.html' xtbox6'有一个无效的模式。报告中的网址只能使用http://,https://开头,FTP://,至mailto:或新闻:

即URL必须有这些协议之一,而因为没有写一个相对的方式URL以协议开头时表示SSRS不支持相对URL。

另一种方法是在一个参数中设置基本URL,然后这个参数很容易改变,并且只需要重新生成你的html页面。

+0

不是我希望听到的,但我很高兴听到它。我从来没有注意到这些警告,这有力地回答了我的问题。 – 2009-10-27 19:15:33

5

只要阅读本Q和A,并为任何寻找的人提供更好的解决方案。如果你想要相对的网址,那么只需使用JavaScript

="javascript:void(window.navigate('/mydirectory/reportcountry.aspx?CountryID=" + Fields!CountryID.Value.ToString() + "'))" 
3
="javascript:void(window.open(document.URL.replace('CurrentReportName','NavigateToReportName'),'Window1','menubar=no,width=430,height=350,toolbar=no'));" 

我知道这是一个老帖子。它可以帮助someone..Note:我使用SSRS 2008

0

只需使用全局变量Globals!ReportServerUrl

所以"http://myservername/rs?/myreportname"成为Globals!ReportServerUrl + "?/myreportname"

0

在Visual Studio 2013和SQL Server数据工具你可以访问属性页一个标签。这使链接到另一个报告(在同一个项目),并传递任何参数所需要的选项:

Screenshot of property pages.